0

Я пытаюсь реализовать одно-многое отношение с решением общей сущности в сущностном коде кода, сначала используя наследование. Это не создает желаемых результатов. Мне нужна эта схема:Entity Framework: общая сущность для отношения «один ко многим»

CommonEntity Address   Licensee User 
-------------- ------------- ----------- --------- 
CID(PK)   AddressID(PK) CID(FK/PK) CID(FK/PK) 
AddressID(FK) 

CommonEntity:

public class CommonEntity{ 
    [key] 
    public int CID{get;set;} 
    public virtual List<Address> Addresses { get; set; } 
} 

Адрес:

public class Address{ 
    [key] 
    public int AddressID{get;set;} 
    public string country{get;set;} 
} 

Лицензиат:

public class Licensee{ 
    [key] 
    [ForeignKey("CommonEntity")] 
    public int CID{get;set;} 
    public string CompanyName{get;set;} 
} 

Пользователь:

public class User{ 
    [key] 
    [ForeignKey("CommonEntity")] 
    public int CID{get;set;} 
    public string UserName{get;set;} 
    public string Pass{get;set;} 
} 

DbContext Класс:

public class DataModelContext : DbContext 
{ 
    public DbSet<CommonEntity> CommonEntity { get; set; } 
} 

Приведенный выше код дает это исключение:

ForeignKeyAttribute на имущество 'CommonID' по типу 'TestingEF.Models.Licensee' не является допустимым. Свойство навигации «CommonEntity» не было найдено по зависимому типу «TestingEF.Models.Licensee». Значение Name должно быть допустимым именем свойства навигации .

+0

При использовании '[ForeignKey ("CommonEntity")]', необходимо также свойство навигации 'публичный виртуальный CommonEntity CommonEntity {получить; задавать; } '. –

ответ

0

Я нашел решение самостоятельно. модели:

public class CommonEntity{ 
    [key] 
    public int CID{get;set;} 

    public long AddressId { get; set; } 

    [ForeignKey("Address")] 
    public virtual List<Address> Addresses { get; set; } 
} 
public class Address{ 
    [key] 
    public int AddressID{get;set;} 
    public string country{get;set;} 
    public virtual ICollection<CommonEntity> CommonEntity { get; set; } 
} 
[Table("Licensee")] 
public class Licensee{ 
    public string CompanyName{get;set;} 
} 
[Table("User")] 
public class User{ 
    public string UserName{get;set;} 
    public string Pass{get;set;} 
} 

DbContext Класс:

public class DataModelContext : DbContext 
{ 
     public DbSet<CommonEntity> CommonEntity { get; set; } 
     public DbSet<Address> Addresses { get; set; } 
} 
+0

Это сильно отличается от модели, опубликованной в вашем вопросе. В вышеприведенной модели класс Лицензиат/Пользователь не будет частью модели. он создает 2 отношения «один-ко-многим» (в разных направлениях между «CommonEntity» и «Address» – Smit

+0

Да, его другая модель. Проблема была в моем макете модели, и я узнал об этом и исправил его. –

 Смежные вопросы

  • Нет связанных вопросов^_^