У меня есть предопределенная база данных, которую я хочу отобразить, используя Entity Framework 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 этоищет столбец SiteSiteId
в таблице LCUSettings, который он не может найти, поскольку столбец на самом деле называется 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
назначить конкретное имя столбца дляSite