C# 具有自定义列名的单面配置
我很难找到合适的Fluent方法组合来恰当地映射我的类。以下是我想做的:C# 具有自定义列名的单面配置,c#,.net,entity-framework,ef-fluent-api,C#,.net,Entity Framework,Ef Fluent Api,我很难找到合适的Fluent方法组合来恰当地映射我的类。以下是我想做的: Person table: PersonID, HomeAddressID (nullable), WorkAddressID (nullable) Address table: AddressID, Street, etc... Person类有一个地址homemaddress和一个地址WorkAddress属性,但不是id的整数属性 Address类对于其相关的Person实体没有任何属性 我没有在网上找到这个场景的
Person table: PersonID, HomeAddressID (nullable), WorkAddressID (nullable)
Address table: AddressID, Street, etc...
Person
类有一个地址homemaddress
和一个地址WorkAddress
属性,但不是id的整数属性
Address
类对于其相关的Person
实体没有任何属性
我没有在网上找到这个场景的任何例子,我只是没有找到正确的组合。代码优先配置总是很好地让我困惑
这是我找到的最接近的一个示例,但我得到了无效的列名“HomeAddressID”,这表明我可能映射了关系的错误方面
public class PersonConfiguration : EntityTypeConfiguration<Person>
{
// other mappings
HasOptional(p => p.HomeAddress)
.WithOptionalPrincipal()
.Map(x => x.MapKey("HomeAddressID"));
HasOptional(p => p.WorkAddress)
.WithOptionalPrincipal()
.Map(x => x.MapKey("WorkAddressID"));
}
公共类人员配置:EntityTypeConfiguration
{
//其他映射
HasOptional(p=>p.HomeAddress)
.WithOptionalPrincipal()
.Map(x=>x.MapKey(“HomeAddressID”);
HasOptional(p=>p.WorkAddress)
.WithOptionalPrincipal()
.Map(x=>x.MapKey(“工作地址ID”);
}
我在正确的轨道上吗?能否将家庭地址和工作地址ID添加到person类中?如果是这样的话,这对我来说很有效
public class Person
{
public int? HomeAddressID { get; set; }
private Address _homeAddress;
public Address HomeAddress
{
get { return _homeAddress; }
set
{
_homeAddress= value;
HomeAddressID = value != null ? (int?)value.HomeAddressID : null;
}
}
}
public class PersonConfiguration : EntityTypeConfiguration<Person>
{
HasOptional(a => a.HomeAddress).WithMany().HasForeignKey(p => p.HomeAddressID);
}
公共类人物
{
公共int?HomeAddressID{get;set;}
私人地址(homemaddress);;
公共广播和家庭广播
{
获取{return\u homeAddress;}
设置
{
_家庭地址=值;
HomeAddressID=value!=null?(int?)value.HomeAddressID:null;
}
}
}
公共类人员配置:EntityTypeConfiguration
{
HasOptional(a=>a.HomeAddress).WithMany().HasForeignKey(p=>p.HomeAddressID);
}
看起来很有效,谢谢,但我有意不公开这些属性。在现实生活中,这是一个可更新的视图,并且基础列不会使用视图的触发器进行更新。我不想让它看起来像是开发人员可以为该列指定一个值并期望它保存。