2013-05-07 34 views
0

我的工作,有許多已經存在的表映射像這樣映射數據庫表用流利的API

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的屬性,但並不意味着它是主鍵)。在這種情況下,您可以使用流暢API來明確指定類型是複雜類型。

modelBuilder.ComplexType<Details>(); 

使用上面的方法不允許我使用ToTable()映射這種類型的數據庫表。我如何使用流利的API來做到這一點。我還想強調一下,我不打算在DB密鑰中給出表,儘管它們肯定是應該的。

回答

0

如果現有的表沒有Key並且您不打算更改它,那麼您可能不應該嘗試使用Fluent API添加Key。 Fluent API將幫助您定義實體之間的映射,如果它們不同於原始POCO對象的約定,但它們創建的映射應存在於數據存儲庫中。

你如何從Linq查詢表中提取數據?如果你喜歡(你說你需要從新表中提取數據),你可以將它封裝在只讀字段中:

private string _YourData; 

public string YourData 
{ 
    get { return _YourData ?? (_YourData = ExistingTable.Single(yourquery)); } 
} 
+0

我沒有打算使用Fluent API添加密鑰,但我仍然需要映射我的類到我的數據庫表。應用程序需要知道表名稱和模式名稱,因此需要映射。 – Jeff 2013-05-07 22:25:37