- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 EF 6.1.3 Code First。
我有 2 个类:
员工是从一个文件中加载的,每个文件都包含一个唯一的 EmployeeID
。
我的应用程序允许用户输入并保存有关这些员工的新决策。但是,当 EF 将新决策保存到 DBContext 时,EF 会使用 DB 生成的值覆盖员工的 EmployeeID。
因此,我向 Employee.EmployeeID 添加了属性 DatabaseGeneratedOption.None
:
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
接下来,我删除了数据库,删除了所有迁移,并添加了一个新迁移。
但是,此迁移将 identity
(“指示 DB 是否会在插入期间为该列生成值的值”)设置为 true
:
CreateTable(
"dbo.Employees",
c => new
{
EmployeeID = c.Int(nullable: false, identity: true),
...所以,这没有帮助。
手动编辑此迁移(即,将 identity
设置为 false
)会导致在尝试保存上下文时抛出错误:InnerException = {“无法将值 NULL 插入列‘EmployeeID’,表‘[...]DBContext.dbo.Employees’;列不允许空值。INSERT 失败。语句已终止。”
...尽管上下文的 Local DBSet 中的 EmployeeID 是正确的(不为空,未生成)。
我一直在寻找解决方案,但我能想到的只是一个次优解决方案:向 Employee 添加另一个非关键属性。
我尝试过的其他方法,但无济于事:
使用自动迁移
将 [ForeignKey("EmployeeID")] 添加到 Decision.Employee
编辑:应 E-Bat 的要求,以下是我的实体的摘录:
public class Employee : INotifyPropertyChanged
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
private int _employeeID;
public int EmployeeID
{
get { return _employeeID; }
set
{
if (value != _employeeID)
{
_employeeID = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(nameof(EmployeeID)));
}
}
}
}
[等等]
public class Decision : INotifyPropertyChanged
{
private int _decisionID;
public int DecisionID
{
get { return _decisionID; }
set
{
if (value != _decisionID)
{
_decisionID = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(nameof(DecisionID)));
}
}
}
}
private Employee _employee;
public Employee Employee
{
get { return _employee; }
set
{
if (value != _employee)
{
_employee = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(nameof(Employee)));
}
}
}
}
[等等]
最佳答案
您实际上将映射属性应用于支持变量 _employeeID,您需要改为将其应用于属性:
public class Employee : INotifyPropertyChanged
{
private int _employeeID;
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public int EmployeeID
{
get { return _employeeID; }
set
{
//Code omitted
}
}
关于c# - EF 插入数据库生成的 key ,忽略 DatabaseGeneratedOption.None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34439515/
我有一个名为 Offer 的类,如下所示: public class Offer { public Guid Id { get; set; } [DatabaseGenerated(D
使用 EntityFramework 代码优先,我创建了一个简单的 Foo 表。这是我的实体: public class Foo { [DatabaseGenerated(DatabaseGe
这与 Property(() => p).HasDatabaseGeneratedOption() 一起使用称呼。也许是关闭默认的 DB 值生成? 最佳答案 英孚使用 DatabaseGenerate
我最近开始使用 .NET 核心 v2 . 我正在尝试通过在我的 中使用代码优先方法来设置我的数据库。 web-api 模板。 背景:我以前使用过 Laravel 框架,我想在迁移文件中复制 Larav
我们有一个实体,Role,标有属性 [DatabaseGenerated(DatabaseGeneratedOption.None)]。到目前为止,我们已经使用播种将实体播种到数据库中。但是现在我们想
我这样设置我的映射: [Table("Opportunity")] public partial class Opportunity { // Other columns ...
我有一个 DatabaseGeneratedOption.Identity 的模型,但在特定情况下,想保存具有特定主键值的实体; 即力id = 1 如果我只是分配值并保存,则 id 会被自动生成的值覆
我正在使用 EF 6.1.3 Code First。 我有 2 个类: 员工 决定 员工是从一个文件中加载的,每个文件都包含一个唯一的 EmployeeID。 我的应用程序允许用户输入并保存有关这些员
我已经根据这篇文章创建了代码优先应用程序 - Code First to a New Database .现在我要为 Blog.BlogId 更改 DatabaseGeneratedOption。我用
我有一个 Team 实体,它有一个 GUID TeamId 属性,我想在将其保存到数据库时在添加时自动生成值(请注意,属性不是主键)。 我正在使用 EFCore 3.1.6,后端是 SqlServer
我有一个 Team 实体,它有一个 GUID TeamId 属性,我想在将其保存到数据库时在添加时自动生成值(请注意,属性不是主键)。 我正在使用 EFCore 3.1.6,后端是 SqlServer
[Table( "User" )] public class User { [Key] [DatabaseGeneratedAttribute( DatabaseGeneratedOp
我需要在数据库中手动输入主键值,因为我需要键值与枚举同步。但是,使用 DatabaseGeneratedoption.None 似乎不起作用。即使当我删除数据库并重新开始时,JobType 中的 Id
我有一个使用 [DatabaseGenerated(DatabaseGeneratedOption.Computed)] 属性的 EF5 代码第一个项目。此选项将覆盖我的设置。 考虑这个 SQL 表:
我试图将我的 MVC 3 项目移动到 MVC 4,但是当我想移动这个模型时: public class Link { [DatabaseGenerated(DatabaseGeneratedO
我正在尝试使用 EF 导出/导入 DbContext 的现有数据库。在此上下文中,有几个实体具有 Guid Id 属性和由 ModelBuilder 定义的 DatabaseGeneratedOpti
我需要在 .NET 4 上使用 EF5,并且在将我的类与库的 4.0 版本中不存在的 HasDatabaseGenerationOption.Identity 映射时遇到了一个引用问题。 以下是失败的
带有数据库生成字段的 Entity Framework 6 在插入时失败。根据我的阅读,一旦您将列标记为 DatabaseGenerated,EF 将不会尝试向该字段插入/更新任何内容,这在我的案例中
这是我的 MVC 模型: public class Link { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] publi
当我尝试将 Web API 项目部署到 Azure 上的云网站和云托管服务时,出现此错误: "{"ExceptionType":"System.TypeLoadException","Message"
我是一名优秀的程序员,十分优秀!