Не удается найти метод InsertOnSubmit()
Я новичок в 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
Изменить: Использование Visual Studio 2010 на FW 4.0
4 ответа
InsertOnSubmit
является методом Linq-to-SQL, а не в Entity Framework.
Однако, поскольку наш проект был преобразованием из Linq-в-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);
}
}
куда EntityHelper
согласно библиотеке с открытым исходным кодом MyExtensions.
Привет это у меня работает
Entity db = new Entity();
TABLE_NAME table = new TABLE_NAME
{
COLUMN1 = "TEST",
cOLUMN2 = "test"
//etc...
};
db.TABLE_NAME.Add(table);
db.SaveChanges();
Наконец-то нашел, что было не так, моя база данных Entity была файлом dbmx, а не файлом dbml. Я не понимаю, почему это.. но долго, как это работает. (Мне нужно купить новую книгу, я думаю) - Хьюго 17 февраля в 19:40
У меня также есть та же проблема. Мы можем вставить с помощью Добавить
GMR_DEVEntities CTX;
CTX = new GMR_DEVEntities();
tblConfig Config = new tblConfig { ID = Guid.NewGuid(), Code = "new config code" };
CTX.tblConfigs.Add(Config);