我用EF fluent API將我的POCO類映射到數據庫表。我需要在我自己的應用程序邏輯中使用映射配置。更具體地講,讓 說我有實體的「產品」和我對這個實體下面的映射:如何在我自己的應用程序邏輯中使用實體框架流利的API配置?
public class ProductMap : EntityTypeConfiguration<Product>
{
public ProductMap()
{
....
this.HasKey(t => t.ProductId);
...
}
}
在我的應用程序的邏輯,我想寫這得到我的實體的鍵字段(此處爲產品編號的一般方法)。 如果我使用了數據註釋屬性,我可以使用反射來查找我的關鍵屬性。我的問題是,當我用流利的API定義我的映射時,它基本上可能達到相同的效果嗎?
謝謝diaho。我剛剛提出了您提出的解決方案,但仍然不是一個好的解決方案,因爲實體框架不允許我們使用不是純實體字段的字段進行查詢。以下面的例子:我想寫一個基於它的id返回一個實體的泛型方法。我來到了以下解決方案:
public TModel GetById<TModel, TKey>(TKey id) where TModel : ModelBase<TKey>
{
return _context.Set<TModel>().where(e => e.Id == id).FirstOrDefault();
}
因爲實體框架抱怨e.Id
不是掘進實體類的字段(它的父類的字段)該代碼但不工作。當然可以通過將Set<TModel>()
轉換爲列表(如下)來強制執行查詢。但是在性能方面這很糟糕,因爲它將所有實體加載到內存中以檢索單個內存。
public TModel GetById<TModel, TKey>(TKey id) where TModel : ModelBase<TKey>
{
return _context.Set<TModel>().ToList().where(e => e.Id == id).FirstOrDefault();
}
對這種情況你有更好的建議嗎?