相关疑难解决方法(0)

为什么SET IDENTITY_INSERT OFF不适用于EF 4.1?

我正在使用Entity Framework 4.1 Code First,我有一个具有IDENTITY键的表,因为此表中的所有新条目都应具有自动生成的ID(ID列称为AccountNumber).我需要从此系统的先前版本中导入一些数据 - 这些帐号需要保留.

在上一个问题中,我了解到必须设置IDENTITY_INSERT才能保留旧帐号.我的想法是,在导入旧客户时,我将打开IDENTITY_INSERT,运行原始SQL插入语句,然后将其关闭并使用EF实体正常继续.

所以,我有以下代码:

    public const string InsertQuery = "INSERT INTO dbo.Businesses (AccountNumber, Name, Active, CreatedBy, CreatedOn, ModifiedBy, ModifiedOn) VALUES({0}, {1}, {2}, {3}, {4}, {5}, {6})";
Run Code Online (Sandbox Code Playgroud)

...

            dbContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.Businesses ON");
            dbContext.Database.ExecuteSqlCommand(InsertQuery, customerData.AccountNumber, customerData.Name, customerData.Active,
                                                 m_userContextManager.GetCurrentUserName(), Now,
                                                 m_userContextManager.GetCurrentUserName(), Now);
            dbContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.Businesses OFF");

            // load the entity and map the rest of the attributes
            dbContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

当我执行第二个语句时,我得到以下真气错误(因为我只是将它设置为OFF或者我认为):

Cannot insert explicit value for identity column in table 'Businesses' when IDENTITY_INSERT is set to OFF.

该语句的返回值为-1,但由于 …

entity-framework ef-code-first

7
推荐指数
2
解决办法
5951
查看次数

在没有安装SQL Server的情况下在Powershell中执行.SQL文件?

我需要提供一个powershell脚本,它运行一系列步骤来安装自定义解决方案.其中一个步骤是创建SQL Server数据库并执行.sql文件以生成架构.

问题是我需要一种在任何机器上执行它的方法,无论是否在本地安装SQL服务器(它通常在另一台网络机器上).此外,我需要避免使用第三方模块,因为我无法强制客户端安装它们.

有办法做到这一点吗?

更新:运行脚本的服务器将安装.NET 4.5,因为将安装SharePoint 2013.

database sql-server powershell sql-scripts sql-server-2012

3
推荐指数
2
解决办法
8580
查看次数