【发布时间】:2021-06-02 06:30:21
【问题描述】:
我在数据库中有一个表已经有一些数据,例如这是表
public class Foo {
public int Id {get; set;}
public string FooTypeId {get; set;}
}
FooTypeId 不是 FK,我只是在其中存储字符串,例如 'TABLE'、'CHAIR'..
现在我想创建一个新表来保存FooType 的值,所以FooTypeId 成为外键。
所以我是这样设计的:
public class Foo {
public int Id {get; set; }
public string FooTypeId {get; set; }
public virtual FooType {get; set; }
}
public class FooType {
public string Id {get; set; }
public string Name {get; set; }
}
没关系。但是,我已经在Foo 表('chair'、'table'、..)中有现有数据,并且我在启动时添加了新数据。所以它崩溃了。
问题是:
在这种情况下,如何忽略带有实体框架的现有数据?严格使用实体框架。
【问题讨论】:
-
你 could disable foreign key checks 但那太傻了。如果已经存在的数据不代表有效值,那么为什么不将该数据移动到不同的列呢?
-
“忽略现有数据”到底是什么意思?如果你想
ignoreFooTypeId中的数据,那么你必须忽略列本身。但是您现在已将FooTypeId设为外键列。因此,现在您需要此列中的FooType的Id值。您要删除/删除这些数据吗?请澄清您的要求。
标签: c# asp.net .net entity-framework entity-framework-core