插入时,由于SQL会生成PK,因此在.NET Core中排除模型的主键

时间:2018-11-09 09:38:27

标签: c# .net sql-server entity-framework

我的SQL Server数据库中有一个简单的表Tags

Tags
(
    ID INT NOT NULL PRIMARY KEY,
    Name VARCHAR(255)  
)

因此,现在我想在我的.NET Core Web API中拥有相应的模型:

Tags.cs:

public partial class Tags
{
    public string Name { get; set; }

    public Tags(string name)
    {
        Name = name;
    }
}

如果我是对的,则在将项目插入表Tags中时,SQL Server应该自动增加ID。

如何在不将ID作为模型中的附加属性的情况下支持它?

我还尝试了在add
上对生成的值进行数据注释 [DatabaseGenerated(DatabaseGeneratedOption.Identity)]。但是,如果我要创建一个新模型,例如:

Tags test = new Tags("test");

在我的模型中使用ID参数时,我总是需要发送一个额外的int,而在调用构造函数时我不会使用它。

2 个答案:

答案 0 :(得分:1)

我现在尝试在模型中执行以下代码以获取ID属性:

function locker() {
  var inputBoxes = document.querySelectorAll("input[type='text']");
  var x = document.getElementById("lock")
  for (i = 0; i < inputBoxes.length; i++) {
    if (x.checked == true) {
      inputBoxes[i].disabled = true;
    } else {
      inputBoxes[i].disabled = false;
    }
  }
}

目前它正在工作。

答案 1 :(得分:-1)

您的标签类应具有Id属性,否则您将无法区分具有相同名称的标签。如果Name是唯一的,则可以考虑根本不添加ID并将Name作为主键,但是我不建议这样做。

为此:

Tags test = new Tags("test");

您可以简单地创建两个构造函数,一个用于初始化要存储的新标签,另一个用于构造现有标签。

public Tags(string name)
{
    Name = name;
}

public Tags(int id, string name)
{
    Id = id;
    Name = name;
}