标签: tph

嵌套tph继承成员的ef-core load collection属性

给出以下类结构

 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)

c# linq entity-framework tph entity-framework-core

10
推荐指数
2
解决办法
4094
查看次数

进一步扩展ASP.NET MVC5身份系统中的ApplicationUser类

我正在为大学创建一个简单的应用程序,学生可以提出某种类型的请求,然后由特定专业的员工处理.

我想使用默认的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)

entity-framework tph asp.net-mvc-5 asp.net-identity

8
推荐指数
1
解决办法
5296
查看次数

EF TPH继承查询

尝试为我正在制作的系统实现一个非常简单的TPH设置,1个基础,2个继承类.

但是继承的类都属于同一个实体集,所以在我的ObjectContext中使用循环,我只能访问基本的抽象类.我不太确定我是如何获得具体类的元素的?(我也将它转换为使用POCO).

替代文字

然后在我的应用程序中使用实体:

using (SolEntities sec = new SolEntities()) {
    Planets = sec.CelestialBodies;
}
Run Code Online (Sandbox Code Playgroud)

有一个CelestialBodies实体设置sec,但没有我期望的行星/卫星.

不太确定要访问它们需要做什么.

谢谢

c# entity-framework c#-4.0 tph

7
推荐指数
1
解决办法
997
查看次数

使用TPH进行实体框架的多级继承

我正在使用Entity Framework在现有遗留数据库的新项目中创建Table Per Heirachy数据模型.这意味着我们不拥有数据库,因此我需要一个不涉及向OrderDiscount表添加列的解决方案.

我的数据模型中有以下结构:

       ??????? (abstract) OrderDiscountBase ???????
       ?                                          ?
       ?                                          ?
SaleOrderDiscount          ???? (abstract) SellerOrderDiscountBase ????
                           ?                                          ?
                           ?                                          ?
                FreeShippingOrderDiscount                 PercentageValueOrderDiscount
Run Code Online (Sandbox Code Playgroud)

有一个预先存在的鉴别器列来区分具体类型.它被调用DiscountType并且可以保存值PercentageOffPromoDiscount,FreeShippingPromoDiscountSaleDiscount.

我的项目中有以下映射,不幸的是,它没有工作.

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做的并不难,所以我假设我刚刚错误地配置了我的实体.

c# entity-framework tph

3
推荐指数
1
解决办法
1953
查看次数