entity framework将实体映射到多个表?
我在使用EF时遇到了问题。 我有以下情况:
表用户:用户名,密码,RoleId,IsActive,CreatedDate,ActivedDate
表管理员:用户名,名称
表员工:用户名,姓名,职位,电话
从这个数据库模式我想通过合并表数据生成以下实体:
public class User { [Key] public string Username { get; set; } public string Password { get; set; } public int RoleId { get; set; } public bool IsActive { get; set; } public DateTime CreatedDate { get; set; } public DateTime ActivedDate { get; set; } public string Name { get; set; } public string Phone { get; set; } public string Position { get; set; } [ForeignKey("RoleId")] public Role Role { get; set; } }
配置类:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity() .Map(map => { map.Properties(p => new { p.Username, p.Password, p.RoleId, p.IsActive, p.CreatedDate, p.ActivedDate }); map.ToTable("User"); }) .Map(map => { map.Properties(p => new { p.Username, p.Name }); map.ToTable("Admin"); }).Map(map => { map.Properties(p => new { p.Username, p.Name, p.Phone, p.Position }); map.ToTable("Staff"); }); base.OnModelCreating(modelBuilder); }
我已经测试了它,但它没有按预期工作。 我总是得到这样的信息:
“用户”类型的属性只能映射一次。 非键属性“名称”不止一次映射。 确保Properties方法仅指定每个非键属性一次。
我错过了什么吗?
问题是Admin
和Staff
中的两个Name
当然不能同时映射到User
一个Name
属性。
但是,您可以使用两个不同的名称属性,并将它们映射到两个表中的相同列名:
User
变更:
public class User { [Key] public string Username { get; set; } ... public string AdminName { get; set; } public string StaffName { get; set; } ... }
和映射片段:
上述就是C#学习教程:entity framework将实体映射到多个表?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
.Map(map => { map.Properties(p => new { p.Username, p.AdminName }); map.Property(p => p.AdminName).HasColumnName("Name"); map.ToTable("Admin"); }).Map(map => { map.Properties(p => new { p.Username, p.StaffName, p.Phone, p.Position }); map.Property(p => p.StaffName).HasColumnName("Name"); map.ToTable("Staff"); });
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1000888.html