1
我想爲實體框架實現多個擴展。 讓我們以此爲例。從實體框架中提取模型信息4.3 - 5
void InsertOrUpdate<T, TUpdateFields, TInsertFields, TKey>(
this DbContext context,
IEnumerable<T> data,
Expression<Func<T, TUpdateFields>> updateFields,
Expression<Func<T, TInsertFields>> insertFields,
Expression<Func<T, TKey>> key)
它應該像這樣使用。
var dc = new SomeContext();
var user = new User() { /* initialize */ };
var array = new[] { user };
dc.InsertOrUpdate(
array,
x => new {
x.UserName,
x.Password,
x.LastLoggedIn
},
x => new {
x.UserName,
x.Password,
x.Email,
x.DateAdded,
x.LastLoggedIn
},
x => x.UserName);
的方法,將產生SQL字符串並把它傳遞到DbContext.Database.ExecuteSqlCommand
方法。 但爲了生成sql,我需要從模型信息中提取表和字段名稱,以防它們與類和屬性名稱不同。
(例如UserName
屬性對應於DB user_name
字段)
我知道他們可以在實體本身作爲數據註解,直接在OnModelCreating(DbModelBuilder)
方法的DbContext
在模型構建器定義的或在形式上定義被設置的EntityTypeConfiguration<T>
實現,並以相同的方法傳遞到模型構建器配置中。
如何從DbContext實例中檢索表和字段的名稱? 有沒有可能?