首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到InsertOnSubmit()方法

找不到InsertOnSubmit()方法
EN

Stack Overflow用户
提问于 2012-02-18 02:57:12
回答 4查看 11.1K关注 0票数 5

我刚接触Entity Framework,我觉得这里有些地方我理解错了。我正尝试在表中插入一行,无论我在哪里找到代码示例,他们都会调用InsertOnSubmit()方法,但问题是我找不到InsertOnSubmit或SubmitChanges方法。

错误告诉我: System.Data.Object.ObjectSet不包含InsertOnSubmit的定义,...

我做错了什么??

http://msdn.microsoft.com/en-us/library/bb763516.aspx

代码语言:javascript
复制
        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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-18 03:23:27

InsertOnSubmit是Linq-to-SQL方法,不在实体框架中。

但是,由于我们的项目是从Linq到SQL的转换,因此我们有一些扩展方法可能会有所帮助:

代码语言:javascript
复制
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 is as per the MyExtensions开源library

票数 14
EN

Stack Overflow用户

发布于 2017-02-02 23:54:51

你好,这对我很有效

代码语言:javascript
复制
Entity db = new Entity();

TABLE_NAME table = new TABLE_NAME 
                    {
                       COLUMN1 = "TEST",
                       cOLUMN2 = "test"
                      //etc...
                    };

                    db.TABLE_NAME.Add(table);
                    db.SaveChanges();
票数 5
EN

Stack Overflow用户

发布于 2012-03-17 03:48:50

终于发现问题所在,我的实体数据库是一个dbmx文件,而不是dbml文件。我不明白为什么..。但只要它起作用,它就一直存在。(我猜需要买本新书)-雨果2月17日19:40

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9333811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档