2016-03-04 2 views
-1

У меня есть база данных SQLite, которая была создана: nHibernate 3 "code first"; то есть модель была написана первой, и отображение было выполнено с помощью Fluent nHibernate. База данных должна быть интегрирована в приложение, которое использует Entity Framework 6.1.3. Я не могу изменить структуру базы данных (нет ALTER TABLE).Как сопоставить ассоциацию таблицы за тип?

Как настроить сопоставление?

Таблицы создаются следующим образом:

CREATE TABLE [Person] (
    [Id] bigint NOT NULL 
, [FirstName] text NULL 
, [LastName] text NULL 
, CONSTRAINT [sqlite_master_PK_Person] PRIMARY KEY ([Id]) 
); 

CREATE TABLE [Patient] (
    [Person_id] bigint NOT NULL 
    [Nickname] text NULL 
, CONSTRAINT [sqlite_autoindex_Patient_1] PRIMARY KEY ([Person_id]) 
); 

Класс иерархии Я хочу, чтобы это:

public class Person 
{ 
    pubic long Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 
public class Patient : Person 
{ 
    public string NickName { get; set; } 
} 

Все мои попытки карту не удалось, потому что, отображение (по крайней мере по умолчанию) выполняется по первичному ключу каждой таблицы, и они должны иметь одно и то же имя. В моем случае идентификатор равен ìd в таблице Person и Person_id в таблице Patient.

ответ

0

Вот изменения, которые я сделал для отображения иерархии:

public partial class Person 
{ 
    [Key] 
    pubic long Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 
public partial class Patient : Person 
{ 
    [Key, Column("Person_id")] 
    public new long Id 
    { 
     get { return base.Id; } 
     set { base.Id = value; } 
    } 
    public string NickName { get; set; } 
} 
Смежные вопросы