Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms Can';t find InsertOnSubmit()方法_Winforms_Linq_Insertonsubmit - Fatal编程技术网

Winforms Can';t find InsertOnSubmit()方法

Winforms Can';t find InsertOnSubmit()方法,winforms,linq,insertonsubmit,Winforms,Linq,Insertonsubmit,我对实体框架还不熟悉,我想这里有些地方我误解了。 我试图在表中插入一行,在我找到代码示例的任何地方,它们都调用方法InsertOnSubmit(),但问题是我在任何地方都找不到方法InsertOnSubmit或SubmitChanges 错误告诉我: System.Data.Object.ObjectSet不包含InsertOnSubmit的定义 我做错了什么 编辑: 在FW 4.0上使用Visual Studio 2010是一种Linq to SQL方法,不在实体框架中 但是,由于我们的项目

我对实体框架还不熟悉,我想这里有些地方我误解了。 我试图在表中插入一行,在我找到代码示例的任何地方,它们都调用方法InsertOnSubmit(),但问题是我在任何地方都找不到方法InsertOnSubmit或SubmitChanges

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

我做错了什么

编辑:
在FW 4.0上使用Visual Studio 2010是一种Linq to SQL方法,不在实体框架中

但是,由于我们的项目是从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);
    }
}
公共静态类ObjectContextensions
{
公共静态无效提交更改(此ObjectContext上下文)
{
SaveChanges();
}
公共静态void InsertOnSubmit(此ObjectQuery表,T实体)
{
table.Context.AddObject(GetEntitySetName(table.Context,entity.GetType()),entity);
}
公共静态void InsertAllOnSubmit(此ObjectQuery表,IEnumerable实体)
{
var entitySetName=GetEntitySetName(table.Context,typeof(T));
foreach(实体中的var实体)
{
table.Context.AddObject(entitySetName,entity);
}
}
公共静态void DeleteAllOnSubmit(此ObjectQuery表,IEnumerable entities),其中T:EntityObject,new()
{
var entitiesList=entities.ToList();
foreach(实体列表中的var实体)
{
if(null==entity.EntityKey)
{
SetEntityKey(table.Context,entity);
}
var toDelete=(T)table.Context.GetObjectByKey(entity.EntityKey);
if(null!=toDelete)
{
table.Context.DeleteObject(toDelete);
}
}
}
公共静态void SetEntityKey(此ObjectContext上下文,TEntity实体),其中TEntity:EntityObject,new()
{
entity.EntityKey=context.CreateEntityKey(GetEntitySetName(context,entity.GetType()),entity);
}
公共静态字符串GetEntitySetName(此ObjectContext上下文,类型entityType)
{
返回EntityHelper.GetEntitySetName(entityType,上下文);
}
}

Where open source.

最终发现了问题所在,我的实体数据库是一个dbmx文件,而不是一个dbml文件。我不明白这是为什么。。但只要它起作用就行。(我想需要买一本新书)–雨果2月17日19:40我也有同样的问题。我们可以使用Add插入

GMR_DEVEntities CTX;
    CTX = new GMR_DEVEntities();
    tblConfig Config = new tblConfig { ID = Guid.NewGuid(), Code = "new config code" };
    CTX.tblConfigs.Add(Config);

你好,这对我有用

Entity db = new Entity();

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

                    db.TABLE_NAME.Add(table);
                    db.SaveChanges();

您使用的是EF,而不是LINQ到SQL。您将LINQ到SQL和。你用的是后者。我的错是,我会修正postGood的问题,我也弄错了。哇,我也犯了这个错误。。。脸掌!最终发现了问题所在,我的实体数据库是一个dbmx文件,而不是一个dbml文件。我不明白这是为什么。。但只要它起作用就行。(我想需要买一本新书)这些是linq-to-sql特有的方法吗?或者在迁移到EF时还有其他方法不起作用吗?@frenchie-这可能并不详尽,但它解决了我们的大部分问题。
Entity db = new Entity();

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

                    db.TABLE_NAME.Add(table);
                    db.SaveChanges();