在记录创建时使用EF / EF Core 2将带有Id的前缀添加到SQL表中的新列

时间:2018-03-06 21:02:15

标签: sql-server entity-framework entity-framework-core

我有以下型号

public_module

我正在尝试写入数据库参考列,如

import os
staging = [r"F:\PythonModules\exp"]

for path in staging:
    if os.path.isdir(path):
        sys.path.append(path)

我的上下文类具有以下配置

public class Student
{
    public int Id { get; set; }

    private string reference;

    public string Reference
    {
        get
        {
            return this.reference;
        }
        set
        {
            this.reference = "ST" + Id;
        }
    }
}

但我没有得到我想要的东西。 请记住我不想在sql server中生成

1 个答案:

答案 0 :(得分:0)

好的,让我们看看:

  1. [Id]是身份和自动增量
  2. 您需要使用" ST"填写[参考]列。 + [Id],总是
  3. 您不想在SQL服务器端执行任何操作
  4. 您正在使用EF Core
  5. 事实:

    1. HasComputedColumnSql和ValueGeneratedOnAdd与填充列的方式无关[参考]
    2. 列[Id]是非确定性的,直到实际在表中写入行
    3. 列[引用]不是计算列类型,因为它实际上有应用程序在其中写入的实际数据,即使它始终是" ST" + [Id]
    4. EF的解决方案:

      1. 将行添加到实体
      2. 保存更改
      3. 使用如下的直接赋值修改同一行的[Reference]列:

        student.Reference =" ST" + student.Id.ToString();

      4. 再次保存更改

      5. 或者,您可以考虑:

        1. 使[参考]列成为SQL Server的计算列
        2. 或者使[Reference]属性仅存在于上面的类定义中,只是没有setter。在我的拙见中,无需将其保留在实际的表格中。
        3. 抱歉,由于您的限制和限制,它可能无法完美解决您的问题。

          所以,祝你好运!