抽象基类与MVC、EF的继承关系

发布于 2024-12-13 09:30:16 字数 998 浏览 2 评论 0原文

我有这个示例项目:

模型:

public class Country
{
 public int ID{get; set;}
 public string CountryName{get; set;}
}

public abstract class Subject
{
  public int CountryID{get; set;}
}

public class Person : Subject
{
 public string PersonName{get; set;}
}

public class Company : Subjet
{
 public string CompanyName{get; set;}
}

上下文:

public class SampleContext : DbContext
{
 public DbSet<Contry> Countries{get; set;}
 public DbSet<Person> Persons{get; set;}
 public DbSet<Company> Companies{get; set;}

 modelBuilder.Entity<Person>().Map(m => { m.MapInheritedProperties();ToTable("Person"); });
 modelBuilder.Entity<Company>().Map(m => { m.MapInheritedProperties();ToTable("Company"); });
}

我收到此错误。

错误3013:从第xxx行开始的映射片段出现问题:缺少表映射:来自表Subject(CountryID)的外键约束Subject_Country

但是,Subject是抽象的,我不会在数据库中使用这样的表。当我在主题类上仅使用 int 或 string 等参数时,一切正常。但是当我想使用某种关系时,我收到此错误。

非常感谢您的帮助。

i have this sample project:

Models:

public class Country
{
 public int ID{get; set;}
 public string CountryName{get; set;}
}

public abstract class Subject
{
  public int CountryID{get; set;}
}

public class Person : Subject
{
 public string PersonName{get; set;}
}

public class Company : Subjet
{
 public string CompanyName{get; set;}
}

Context:

public class SampleContext : DbContext
{
 public DbSet<Contry> Countries{get; set;}
 public DbSet<Person> Persons{get; set;}
 public DbSet<Company> Companies{get; set;}

 modelBuilder.Entity<Person>().Map(m => { m.MapInheritedProperties();ToTable("Person"); });
 modelBuilder.Entity<Company>().Map(m => { m.MapInheritedProperties();ToTable("Company"); });
}

And I get this error.

Error 3013: Problem in Mapping Fragment starting at line xxx: Missing table mapping: Foreign key constraint Subject_Country from table Subject(CountryID)

But, Subject is abstract and I dont wont such table in DB. When I use on Subject class only parameters like int or string, all is ok. But when I want use there some relationship, I get this error.

Thanks a lot for help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

街角卖回忆 2024-12-20 09:30:17

在您的 SampleContext 中,“国家/地区”的名称拼写错误。

public DbSet<Contry> Countries{get; set;} 

应该是:

public DbSet<Country> Countries{get; set;} 

In your SampleContext the name of the 'Country' is misspelled.

public DbSet<Contry> Countries{get; set;} 

Should be:

public DbSet<Country> Countries{get; set;} 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文