對於實體框架和調查將一些傳統數據訪問代碼轉換爲使用EF,我相當新穎。我想知道在EF中是否可行以及如果是的話。 說我有一個客戶表這樣如何使用實體框架從數據庫實現自定義對象實現
CustomerId | ProductId | StartDate | EndDate
--------------------------------------------
100 | 999 | 01/01/2012| null
說我也是從別的地方裝載的產品數據(如XML文件)作爲產品對象的緩存。
public class Customer
{
public int CustomerId {get;set;}
public int Product {get;set}
public DateTime StartDate {get;set;}
public DateTime? EndDate {get;set;}
}
public class Product
{
public int ProductId {get;set;}
public int Description {get;set}
}
目前CustomerDal類中的方法使用StoredProc得到一個Customer對象這樣
Customer GetCustomer(int customerId)
{
// setup connection, command, parameters for SP, loop over datareader
Customer customer = new Customer();
customer.CustomerId = rdr.GetInt32(0);
int productId = rdr.GetInt32(1);
// ProductCache is a singleton object that has been initialised before
customer.Product = ProductCache.Instance.GetProduct(productId);
customer.StartDate = rdr.GetDateTime(2);
customer.EndDate = rdr.IsDbNull(3) ? (DateTime?)null : rdr.GetDateTime(3);
return customer;
}
我的問題是這可能使用EF時,它物化客戶對象從設置產品屬性不數據庫,但通過另一種方法,在這種情況下,從內存緩存中。在保存新的Customer對象時相似,它只從Products屬性獲取ProductId並將值保存在數據庫中。
我不知道任何關於EF 4.X的支持。那麼如何將id(productid)屬性映射到數據庫,但不映射關係屬性(Product)?您可以在您的實體中實施產品屬性。與您的解決方案類似的東西。 – yonexbat