我正在使用实体框架和代码优先映射到遗留数据库(我知道如果我已经构建了数据库,那么我应该使用“数据库优先”方法,但是在某些方面,我手动填充注释比处理控制更好在设计器上),其中有一个表有一个指向另一个表的键(它实际上是另一个数据库中的表的同义词),它像外键一样工作,但它实际上并没有在表模式中定义。
问题是:我可以强制这种关系存在于我的 POCO 课程中吗?我可以使用 Fluent API 映射它吗?这可能吗?
像往常一样,提前谢谢!
我正在使用实体框架和代码优先映射到遗留数据库(我知道如果我已经构建了数据库,那么我应该使用“数据库优先”方法,但是在某些方面,我手动填充注释比处理控制更好在设计器上),其中有一个表有一个指向另一个表的键(它实际上是另一个数据库中的表的同义词),它像外键一样工作,但它实际上并没有在表模式中定义。
问题是:我可以强制这种关系存在于我的 POCO 课程中吗?我可以使用 Fluent API 映射它吗?这可能吗?
像往常一样,提前谢谢!
当然,您可以通过流畅的映射或数据注释手动定义外键和导航属性。
假设我有一个Parent
表,其中包含一个字段和一个指向第二个数据库中表CatCode
的同义词。两者在一个上下文中都有对应的类和 s。映射(派生自)可能看起来像(构造函数):CategoryEx
Category
DbSet
EntityTypeConfiguration
public ParentMap()
{
this.HasKey(t => t.Id);
this.HasRequired(p => p.Category).WithMany().HasForeignKey(p => p.CatCode);
...
}
public CategoryMap()
{
this.HasKey(t => t.CatCode);
this.ToTable("CategoryEx");
...
}
Parent
看起来像:
public class Parent
{
public int Id { get; set; }
public string Name { get; set; }
public string CatCode { get; set; }
...
public Category Category { get; set; }
}