给出以下类结构
public class Parent
{
public Guid Id { get;
public List<BaseChild> Children { get; set; }
}
public abstract class BaseChild
{
public int Id { get; set; }
public string ChildName { get; set; }
}
public class NormalChild : BaseChild
{
public DateTime BirthDate { get; set; }
}
public class RichChild : BaseChild
{
public List<OffshoreAccount> OffshoreAccounts { get; set; }
}
public class OffshoreAccount
{
public string AccountNumber { get; set; }
public AccountInfo AccountInfo …Run Code Online (Sandbox Code Playgroud) 我正在为大学创建一个简单的应用程序,学生可以提出某种类型的请求,然后由特定专业的员工处理.
我想使用默认的MVC5身份系统,并使用TPH模式扩展ApplicationUser类.所以我将常用属性添加到ApplicationUser:
public class ApplicationUser : IdentityUser
{
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我创建了两个继承ApplicationUser的类:
public class Student : ApplicationUser
{
public string PersonalNumber { get; set; }
public bool Monitor { get; set; }
public virtual Group Group { get; set; }
public virtual ICollection<Request> Requests { get; set; }
}
public class Employee : ApplicationUser
{
public virtual EmployeeSpeciality …Run Code Online (Sandbox Code Playgroud) 尝试为我正在制作的系统实现一个非常简单的TPH设置,1个基础,2个继承类.
但是继承的类都属于同一个实体集,所以在我的ObjectContext中使用循环,我只能访问基本的抽象类.我不太确定我是如何获得具体类的元素的?(我也将它转换为使用POCO).

然后在我的应用程序中使用实体:
using (SolEntities sec = new SolEntities()) {
Planets = sec.CelestialBodies;
}
Run Code Online (Sandbox Code Playgroud)
有一个CelestialBodies实体设置sec,但没有我期望的行星/卫星.
不太确定要访问它们需要做什么.
谢谢
我正在使用Entity Framework在现有遗留数据库的新项目中创建Table Per Heirachy数据模型.这意味着我们不拥有数据库,因此我需要一个不涉及向OrderDiscount表添加列的解决方案.
我的数据模型中有以下结构:
??????? (abstract) OrderDiscountBase ???????
? ?
? ?
SaleOrderDiscount ???? (abstract) SellerOrderDiscountBase ????
? ?
? ?
FreeShippingOrderDiscount PercentageValueOrderDiscount
Run Code Online (Sandbox Code Playgroud)
有一个预先存在的鉴别器列来区分具体类型.它被调用DiscountType并且可以保存值PercentageOffPromoDiscount,FreeShippingPromoDiscount或SaleDiscount.
我的项目中有以下映射,不幸的是,它没有工作.
private void ConfigureOrderDiscountEntity(EntityTypeConfiguration<OrderDiscountBase> entity)
{
entity
.HasKey(orderDiscount => orderDiscount.Id)
.Map<SaleOrderDiscount>(
configuration => configuration.Requires("DiscountType").HasValue(OrderDiscountTypes.Sale))
.Map<PercentageValueOrderDiscount>(
configuration => configuration.Requires("DiscountType").HasValue(OrderDiscountTypes.PercentageOff))
.Map<FreeShippingOrderDiscount>(
configuration => configuration.Requires("DiscountType").HasValue(OrderDiscountTypes.FreeShipping))
.ToTable(tableName: "OrderDiscount", schemaName: "Orders")
;
}
Run Code Online (Sandbox Code Playgroud)
我看到的例外是:
EntityTypes SellerOrderDiscountBase,SaleOrderDiscount,FreeShippingOrderDiscount,PercentageValueOrderDiscount被映射到表OrderDiscountBase中的相同行.映射条件可用于区分这些类型映射到的行.
我已经看到人们通过添加第二个鉴别器列来解决旧版本的Entity Framework中的这个问题,但正如我所说,我无法对数据库进行更改.
我要求EF做的并不难,所以我假设我刚刚错误地配置了我的实体.