我对Entity framework 6.2有一些问题。我改变了ef版本,现在我有很多bug ..
EF版本:6.2
Visual studio版本:15.5.2
.Net版本:4.7.1
操作系统:Windows 10 Pro 1709
1。NotMapped
为什么不继续使用继承?我的示例类:
public class BaseClass {
public string MappedProp {get;set;}
public virtual string NotBeMappedProp {get;set;}
}
public class Test : BaseClass {
public string MappedProp {get;set;}
[NotMapped]
public override string NotBeMappedProp {get;set;}
}
add-migration
未在项目中找到实体框架。但我已经安装了它。此外,我删除了所有包文件夹。但仍然继续相同的例外。
我打开干净的项目但很惊讶......我有一个新的问题。我的外键抛出异常。
无法确定之间关联的主要结束 类型x1和x2。这种关联的主要目的必须是 使用关系流畅的API或数据显式配置 注释
我的代码部分看起来像这样:
public class Student{
.....
public string Name {get;set;}
public long? LocationId {get;set;}
[ForeingKey("LocationId")]
public Location Address {get;set;}
......
}
public class Location{
public long Id {get;set;}
........
}
它正在使用以前的版本。
支持上下文的模型自数据库以来已发生变化 创建
答案 0 :(得分:0)
尝试将抽象修饰符添加到BaseClass
定义。 NotMapped
属性应该处于最低级别。如果需要映射重写属性,则应在继承的类中直接使用Column
属性进行映射。
尝试运行命令Install-Package EntityFramework -Version 6.2.0 -Project {{EFProjectName}}重新安装包并正确引用它。
您最好在Address类及其ForeignKey
属性(或您称之为的任何属性)中指定StudentId
属性。它是一对多或一对一的关系。
有关迁移的信息与编译的数据库模型一起存储在数据库表__MigrationHistory中以加快速度(如果代码适合数据库,则每次检查都很耗时),这就是您收到该错误的原因。您的代码中有不同的已编译模型,并且不同的存储在迁移历史记录中。您可以创建空迁移运行命令Add-Migration -Name ManualDbUpdate -IgnoreChanges来克服这个问题,但您必须确保代码模型和数据库模型是相同的。如果不是,你会得到例外。