我是Entity Framework的新手,我认为这里有一些我误解的东西。 我试图在表中插入一行,并且在我找到代码示例的任何地方,他们调用方法InsertOnSubmit(),但问题是我找不到方法InsertOnSubmit或SubmitChanges。
错误告诉我: System.Data.Object.ObjectSet不包含InsertOnSubmit的定义,...
我做错了什么?
http://msdn.microsoft.com/en-us/library/bb763516.aspx
GMR_DEVEntities CTX;
CTX = new GMR_DEVEntities();
tblConfig Config = new tblConfig { ID = Guid.NewGuid(), Code = "new config code" };
CTX.tblConfigs.InsertOnSubmit(Config); // Error here
编辑: 在FW 4.0上使用Visual Studio 2010
答案 0 :(得分:14)
InsertOnSubmit
是Linq-to-SQL方法,而不是实体框架。
但是,由于我们的项目是从Linq-to到SQL的转换,我们有一些可能有帮助的扩展方法:
public static class ObjectContextExtensions
{
public static void SubmitChanges(this ObjectContext context)
{
context.SaveChanges();
}
public static void InsertOnSubmit<T>(this ObjectQuery<T> table, T entity)
{
table.Context.AddObject(GetEntitySetName(table.Context, entity.GetType()), entity);
}
public static void InsertAllOnSubmit<T>(this ObjectQuery<T> table, IEnumerable<T> entities)
{
var entitySetName = GetEntitySetName(table.Context, typeof(T));
foreach (var entity in entities)
{
table.Context.AddObject(entitySetName, entity);
}
}
public static void DeleteAllOnSubmit<T>(this ObjectQuery<T> table, IEnumerable<T> entities) where T : EntityObject, new()
{
var entitiesList = entities.ToList();
foreach (var entity in entitiesList)
{
if (null == entity.EntityKey)
{
SetEntityKey(table.Context, entity);
}
var toDelete = (T)table.Context.GetObjectByKey(entity.EntityKey);
if (null != toDelete)
{
table.Context.DeleteObject(toDelete);
}
}
}
public static void SetEntityKey<TEntity>(this ObjectContext context, TEntity entity) where TEntity : EntityObject, new()
{
entity.EntityKey = context.CreateEntityKey(GetEntitySetName(context, entity.GetType()), entity);
}
public static string GetEntitySetName(this ObjectContext context, Type entityType)
{
return EntityHelper.GetEntitySetName(entityType, context);
}
}
答案 1 :(得分:2)
您好,这对我有用
Entity db = new Entity();
TABLE_NAME table = new TABLE_NAME
{
COLUMN1 = "TEST",
cOLUMN2 = "test"
//etc...
};
db.TABLE_NAME.Add(table);
db.SaveChanges();
答案 2 :(得分:1)
最后发现错误,我的Entity数据库是dbmx文件,而不是dbml文件。我不明白为什么这个...但是只要它有效。 (需要买一本新书我猜) - 雨果2月17日19:40
答案 3 :(得分:0)
我也有同样的问题。我们可以使用Add
插入GMR_DEVEntities CTX;
CTX = new GMR_DEVEntities();
tblConfig Config = new tblConfig { ID = Guid.NewGuid(), Code = "new config code" };
CTX.tblConfigs.Add(Config);