我升級了一個在ef4
開始的舊項目,但現在我已將它遷移到ef5
。等效於DbContext上的ObjectContext.AddObject(entityName,entity)
這是舊代碼:
protected void SaveEntity<T>(T entity)
{
using (DocsManagerContainer context = new DocsManagerContainer())
{
string entityType = typeof(T).ToString();
GetLogger().LogMessage("Save " + entityType + " started", LogLevel.Info);
DbTransaction transaction = null;
try
{
context.Connection.Open();
transaction = context.Connection.BeginTransaction();
context.AddObject(typeof(T).Name + "s", entity);
transaction.Commit();
context.SaveChanges();
}
catch (Exception e)
{
GetLogger().LogMessage("Save " + entityType + " thrown error :", e, LogLevel.Error);
throw e;
}
finally
{
context.Connection.Close();
transaction = null;
}
GetLogger().LogMessage("Save " + entityType + " ended", LogLevel.Info);
}
}
我幾乎所有的代碼升級,除了:context.AddObject(typeof(T).Name + "s", entity);
,但這不是支持了。
我該如何升級?
p.s.我確實想使用通用代碼,而不是使用開關來添加相應的對象來糾正ObjectSet
p.s. 。錯誤,如果我使用.SET()添加(實體)是:
Error 2 The type 'T' must be a reference type in order to use it as parameter 'TEntity' in the generic type or method 'System.Data.Entity.DbContext.Set<TEntity>()' D:\work\DocsManager\trunk\DocsManagerDataMapper\EF4Factory\BaseEF4Factory.cs 64 21 DocsManagerDataMapper
'DbContext'或'ObjectContext'?使用'DbContext',你可以使用'context.Set().Add(entity);' –
我想使用DBContext,而不是像我在問題中所述的對象上下文。 –
我想能夠使用DbContext。[...]。AddObject(EntityName,entity);或者如果可能的話類似的東西。 –