如何解决EF Core Hierarchy TPH 将两个实体映射为一个
我有一个基础项目,其中包含一些基本实体。让我们使用 BaseUser
作为一个。在子项目中,它引用基础项目,User
类继承自该 BaseUser
。唯一的区别是 User
类有 List<Blogs>
,所以没有额外的属性,映射也没有变化。
当我查询 Users
时,它没有找到任何内容,因为它们被创建为 BaseUser
并且查询的鉴别符值为“User”。我不想查询“BaseUser”,因为我想要 List<Blogs>
的关系属性。
有什么方法可以告诉 EF 基本上将这些类视为一个类吗?有没有更好的方法来处理分裂? (显然base project没有blog的概念,所以不能把List移到base中)
应要求提供一些示例类
/* Base Project (nuget package created) */
public class BaseUser {
public int UserId { get; set; }
public int Name { get; set; }
}
public class BaseContext : DbContext {
public DbSet<BaseUser> BaseUsers {get;set;}
}
public class BaseDataInstaller {
BaseContext _ctx;
public BaseDataInstaller( BaseContext ctx ){
_ctx = ctx;
}
public void Install(){
_ctx.BaseUsers.Add( new BaseUser { Name="Demo User 1" } );
_ctx.BaseUsers.Add( new BaseUser { Name="Demo User 2" } );
_ctx.SaveChanges();
}
}
/* Child Project (consumes nuget package)*/
public class User : BaseUser {
List<Blogs> Blogs { get; set; }
}
public class ProjectContext : BaseContext {
public DbSet<User> Users { get; set; }
}
public class SomeService {
ProjectContext _ctx;
public BaseDataInstaller(ProjectContext ctx){
_ctx = ctx;
}
//Finds 0 users
public void PrintUsers(){
var users = _ctx.Users.ToList();
users.ForEach( u=> Console.WriteLine(u.Name) );
}
//Finds Users
public void PrintBaseUsers(){
var users = _ctx.BaseUsers.ToList();
users.ForEach( u=> Console.WriteLine(u.Name) );
}
}
where discriminator = 'BaseUser'
或 where discriminator = 'User'
那么有没有办法让两者具有相同的鉴别器值或
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。