我有一個預定義的數據庫,我想使用實體框架4 CodeFirst進行映射。指定引用對象的實體框架中列的名稱
public class Site
{
public int SiteId { get; set; }
public string SiteName { get; set; }
public DateTime InstallDate { get; set; }
public string Phase { get; set; }
public string Address { get; set; }
public string GpsPosition { get; set; }
public string NetworkDetail { get; set; }
public string SiteCode { get; set; }
public string UserGroupCode { get; set; }
public string InfrastructureNumber { get; set; }
public string Province { get; set; }
public virtual ICollection<LcuSetting> LcuSettings { get; set; }
}
而另一個類
public class LcuSetting
{
public int LCUSettingId { get; set; }
[Column(Name="Site_Id")]
public Site Site { get; set; }
public string Name { get; set; }
public string IPAddress { get; set; }
public string SubnetMask { get; set; }
public string DefaultGateway { get; set; }
}
因爲EF4的映射約定它正在尋找在表LCUSettings列SiteSiteId
,它找不到由於列實際上是一個名爲Site_ID
在我的DbContext
派生類中,我覆蓋了OnModelCreating
方法並設置要使用的表名稱。
modelBuilder.Entity<Site>().ToTable("Site");
這工作正常。
當我嘗試但指定的列名,如下
modelBuilder.Entity<LcuSetting>().Property(c => c.Site).HasColumnName("Site_Id");
我收到以下異常消息
類型「LcuSystemOnline.Models.Site」必須是一個非空的爲了在通用類型或方法使用它作爲參數「T」值類型「System.Data.Entity.ModelConfiguration.Configuration.Types.StructuralTypeConfiguration.Property(System.Linq.Expressions.Expression>)」
我理解的例外,但我怎麼怎麼拿到modelBuilder
到特定的ColumnName分配給Site