我正在开发一个具有许多已经存在的表映射的应用程序,如此
public DbSet<Activity> Activities { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Activity>().ToTable("Activity", "MES_WVM");
modelBuilder.Entity<Activity>().HasKey(r => new { r.ActivityID });
}
适用于我最终使用的大多数表格。我现在的任务是创建一些新功能,这需要我从新表中提取数据。这些表没有主键,我没有权限更改它。这篇关于mapping with fluent api州的MSDN文章
按照惯例,没有指定主键的类型被视为复杂类型。在某些情况下,Code First不会检测复杂类型(例如,如果您确实有一个名为ID的属性,但您并不意味着它是主键)。在这种情况下,您可以使用Fluent API明确指定类型是复杂类型。
modelBuilder.ComplexType<Details>();
使用上述方法不允许我使用ToTable()
将此类型映射到数据库表。如何使用流畅的API执行此操作。我还想强调一点,我不打算在数据库密钥中提供表格,即使它们真的应该这样做。
答案 0 :(得分:0)
如果现有表没有Key并且您不打算更改它,那么您可能不应该尝试使用Fluent API添加Key。如果实体与原始POCO对象的约定不同,Fluent API将帮助您定义实体之间的映射,但它们创建的映射应该存在于数据存储库中。
如何从Linq查询中提取表中的数据。如果您愿意,可以将其封装在只读字段中(正如您所说,您需要从新表中提取数据):
private string _YourData;
public string YourData
{
get { return _YourData ?? (_YourData = ExistingTable.Single(yourquery)); }
}