0

我正在开发一个具有许多已经存在的表映射的应用程序,例如

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

对于我最终使用的大多数表格都可以正常工作。我现在的任务是创建一些新功能,这需要我从新表中提取数据。这些表没有主键,我无权更改它。这篇关于使用流畅 api状态进行映射的MSDN 文章

按照惯例,没有指定主键的类型被视为复杂类型。在某些情况下,Code First 不会检测到复杂类型(例如,如果您确实有一个名为 ID 的属性,但您并不意味着它是主键)。在这种情况下,您将使用 fluent API 显式指定类型是复杂类型。

modelBuilder.ComplexType<Details>();

使用上面的方法不允许我使用ToTable()将这种类型映射到数据库表。我如何使用流利的 API 做到这一点。我还想强调,我不打算在 DB 键中提供表,即使它们确实应该这样做。

4

1 回答 1

0

如果现有表没有密钥并且您不打算更改它,那么您可能不应该尝试使用 Fluent API 添加密钥。如果实体与原始 POCO 对象的约定不同,Fluent API 将帮助您定义实体之间的映射,但它们创建的映射应该存在于数据存储库中。

您如何从 Linq 查询中的表中提取数据。如果您愿意,您可以将其封装在只读字段中(正如您所说,您需要从新表中提取数据):

private string _YourData;

public string YourData 
{ 
   get { return _YourData ?? (_YourData = ExistingTable.Single(yourquery)); }
}
于 2013-05-07T22:04:05.097 回答