GVKun编程网logo

asp.net – EF代码优先:当IDENTITY_INSERT设置为OFF时,无法在表’myTable’中为identity列插入显式值

5

最近很多小伙伴都在问asp.net–EF代码优先:当IDENTITY_INSERT设置为OFF时,无法在表’myTable’中为identity列插入显式值这两个问题,那么本篇文章就来给大家详细解答一

最近很多小伙伴都在问asp.net – EF代码优先:当IDENTITY_INSERT设置为OFF时,无法在表’myTable’中为identity列插入显式值这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展asp.net – IDENTITY_INSERT设置为关闭错误、asp.net – 如何将IDENTITY_INSERT设置为ON?、asp.net-identity – 支持EF和Asp.NEt身份的IdentityServer3、asp.net-mvc – Asp.net Identity:User.Identity.GetUserId()始终为空,User.Identity.IsAuthenticated总是为false等相关知识,下面开始了哦!

本文目录一览:

asp.net – EF代码优先:当IDENTITY_INSERT设置为OFF时,无法在表’myTable’中为identity列插入显式值

asp.net – EF代码优先:当IDENTITY_INSERT设置为OFF时,无法在表’myTable’中为identity列插入显式值

将主键设置为数据库中的标识(sql Server)

使用EF插入数据时,我收到错误

Cannot insert explicit value for identity column in table ‘myTable’
when IDENTITY_INSERT is set to OFF

使用这个特定实体,虽然我使用与其他实体相同的方法来插入数据并且不会出现错误.

public class MyTable 
    {
    [Key/*,DatabaseGenerated(DatabaseGeneratedOption.Identity)*/]
    public int ID{get;set;}
    public string name {get;set;}
    public string type {get;set;}
    public string status {get;set;}
    public int country {get;set;}
    public DateTime start_date {get;set;}
    public DateTime due_date {get;set;}
    }`

询问

MyTable check= new MyTable();
            check.name = checkName;
            check.type = "DB";
            check.status = "New";
            check.country = country;
            check.start_date = DateTime.Now;
            check.due_date = dueDate;
            db.myTables.Add(check);
            db.SaveChanges();

更新 :

取消注释上述行后

(DatabaseGenerated(DatabaseGeneratedOption.Identity))

这是一个例外

A dependent property in a referentialConstraint is mapped to a
store-generated column. Column: ‘ID’

解决方法

我不确定它是否也在你的情况下….但第二个错误说..你在一些关系中使用你的主键作为外键,这只对具有DatabaseGeneratedOption.None的属性有效.

因此,要将主键用作标识,可以使用DatabaseGeneratedOption.Identity对其进行装饰 在这种情况下,它将抛出异常,因为您不能使用identity作为关系(而是使用DatabaseGeneratedOption.None).

asp.net – IDENTITY_INSERT设置为关闭错误

asp.net – IDENTITY_INSERT设置为关闭错误

我有一个MVC Web应用程序,在我想要添加的模型中有一个表.我的主键与其他数据字段一起设置,但每次尝试添加到表中时,我会收到以下错误:

“当IDENTITY_INSERT设置为OFF时,无法在表”TABLE_NAME“中插入标识列的显式值.

我不知道为什么这个问题出现,我将主键设置为身份,它也被设置为在Visual Studio表设计器中自动递增.有什么办法可以调整Visual Studio中的表设计器中的IDENTITY_INSERT参数?或者还有一些其他可能导致此问题.

更新:@Brian – 据我所知,我没有明确设置值,这里是添加到表的代码.

//Add viewer
public void addViewer(ModelStateDictionary modelState,Users user)
{
   var userToAdd = new UserRoles();
   userToAdd.Users = user;

   if (String.IsNullOrEmpty(userToAdd.Users.Username))
   {
      modelState.AddModelError("noName","Please enter a username for the new Viewer");
   }

   //See if Committee Member already exists
   try
   {
      userToAdd = _db.UserRoles.First(ur => ur.Users.Username == userToAdd.Users.Username);
      modelState.AddModelError("userExists","A Viewer with that username already exists in the system");
      return;
    }
    catch (Exception e)
    {
       if (modelState.IsValid)
       {
          //Assign Committee Member role
          userToAdd.Role = "Viewer";
          userToAdd.Users = user;
          //Add new Committee Member to User Roles and associated username to Users
          _db.AddToUserRoles(userToAdd);
          _db.SaveChanges();
       }
    }
}

解决方法

您的代码似乎试图将一个特定的值插入到主键列中,该列被定义为IDENTITY.

为了避免错误 – 不要插入任何值!让数据库处理为要插入的行获取一个新值.

如果您使用Linq-to-sql,请在可视化设计器中单击相关表,并查看属性:

alt text http://i39.tinypic.com/bgzs6d.png

“自动生成的值”必须是“True”(这不是默认值),而自动同步应该是“OnInsert”(再次:不是默认值).此外,将“主键”设置为true,并检查以确保“服务器数据类型”正确 – Int NOT NULL IDENTITY(或类似的内容).

如果您需要覆盖默认行为(通常仅在清理脚本或一次性数据操作中),则可以在表上打开IDENTITY_INSERT,例如,之后,您可以将任何您喜欢的值插入IDENTITY列:

SET IDENTITY_INSERT YourTableName ON

INSERT INTO YourTableName(IdentityColumn) VALUES(5555)

SET IDENTITY_INSERT YourTableName OFF

这更像是一个清理/数据管理类的任务 – 而不是你应该做的一切都是开发人员.

asp.net – 如何将IDENTITY_INSERT设置为ON?

asp.net – 如何将IDENTITY_INSERT设置为ON?

在第一个我要求管理员删除这篇文章:
‘怎么样,能-I-使-A-主键-AS-自动增量式-VB净九十五万九千七百八十七分之二千零八#959787’
因为我正面临着评论的问题,当我尝试添加评论时,错误信息很简单:“评论需要50个声望 – 请参阅faq”!

这里我只想问一下IDENTITY_INSERT,如何在vb.net 2008中将其设置为ON
发生此错误:http://www.rofof.com/img2/6amojc6.gif

对于我引起的这些问题,我感到非常抱歉.

解决方法

听起来你的Linq to sql类与你的数据库不同步.你需要更新它们.如果您使用的是内置的visual studio设计器,请从DBML中删除该表,然后重新添加.

主键列的属性应具有如下所示的属性:

[Column(Storage="_TeacherID",AutoSync=AutoSync.OnInsert,DbType="Int NOT NULL IDENTITY",IsPrimaryKey=true,IsDbGenerated=true)]

asp.net-identity – 支持EF和Asp.NEt身份的IdentityServer3

asp.net-identity – 支持EF和Asp.NEt身份的IdentityServer3

我计划将IdentityServer3与 IdentityServer3.EntityFramework一起用于客户端,范围和操作数据.我还想使用 IdentityServer3.AspNetIdentity 配置用户存储

这里有什么建议?是否可以为客户端,范围,运营数据和Asp.Net Identity提供单一数据库?如果我们在同一个数据库中有ASP.NET标识表,那么EF migration会出现问题吗?

或者我应该为IdentityServer3.EntityFramework创建一个seprate数据库,为ASP.NET Identity创建另一个数据库?

我还想为每个客户端配置用户,我不确定IdentityServer3是否支持这个用户

解决方法

我不知道组合数据库是否有任何问题,但我确实得到了两个数据库.在我的情况下,我没有使用迁移,我正在为我的用户信息使用修改后的ef数据存储.我不记得确切的细节,但我确实不得不搞乱一些配置,以使其工作. 现在我看到范围和客户端为我工作,对于角色我创建了自己的authorize属性来解决“什么样的令牌有角色”的事情,我从来没有真正理解过.我的经验是追踪和错误,因为似乎没有一条简单的路径可以使OAuth / OIDC工作.不是Identity Server的错,它主要归功于Oauth和OIDC规范.

asp.net-mvc – Asp.net Identity:User.Identity.GetUserId()始终为空,User.Identity.IsAuthenticated总是为false

asp.net-mvc – Asp.net Identity:User.Identity.GetUserId()始终为空,User.Identity.IsAuthenticated总是为false

请参阅我的代码:
var result = await SignInManager.PasswordSignInAsync(model.UserName,model.Password,model.RememberMe,shouldLockout: false);
switch (result)
{
    case SignInStatus.Success:
        string UserId = User.Identity.GetUserId(); 
        return RedirectToAction("ClientDetails","Home");
    case SignInStatus.LockedOut:
        return View("Lockout");
    case SignInStatus.Requiresverification:
        return RedirectToAction("SendCode","Account",new { ReturnUrl = returnUrl,RememberMe = model.RememberMe });
    case SignInStatus.Failure:
    default:
        ModelState.AddModelError("","Invalid login attempt.");
        return View(model);
}

UserId始终为空,User.Identity.IsAuthenticated始终为false.但是我可以查看需要身份验证的View ClientDetails.

解决方法

我假设你的例子是你的AccountController.Login()方法的代码.我有与您相同的问题,但发现用户对象将不会被填充,直到下一个请求.尝试这种方法:
case SignInStatus.Success:
    return RedirectToAction("DoWork","Account");


public async Task<ActionResult> DoWork()
{
    //this works
    string UserId = User.Identity.GetUserId();
    //return to View or Redirect again
}

关于asp.net – EF代码优先:当IDENTITY_INSERT设置为OFF时,无法在表’myTable’中为identity列插入显式值的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于asp.net – IDENTITY_INSERT设置为关闭错误、asp.net – 如何将IDENTITY_INSERT设置为ON?、asp.net-identity – 支持EF和Asp.NEt身份的IdentityServer3、asp.net-mvc – Asp.net Identity:User.Identity.GetUserId()始终为空,User.Identity.IsAuthenticated总是为false的相关知识,请在本站寻找。

本文标签: