具有自定义列名称的单侧配置

时间:2014-09-04 20:45:28

标签: c# .net entity-framework ef-fluent-api

我无法找到正确的Fluent方法组合来适当地映射我的类。这基本上就是我要做的事情:

Person table: PersonID, HomeAddressID (nullable), WorkAddressID (nullable)
Address table: AddressID, Street, etc...

Person类具有Address HomeAddressAddress WorkAddress属性,但不包含ID的整数属性。

Address类没有相关Person实体的任何属性。

我没有在网上找到任何这种情况的例子,我只是找不到合适的组合。代码优先配置总是让我感到困惑。

这是我找到的最接近的一个例子,但是我得到Invalid column name '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"));    
}

我是在正确的轨道上吗?

1 个答案:

答案 0 :(得分:1)

您可以将HomeAddress和WorkAddress ID添加到人员类吗?如果是这样,这对我有用......

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);
}