相关疑难解决方法(0)

在EF 4.2中使用TPT(每种类型的表)和删除父对象的问题

根据我对几个帖子的理解,使用共享主键时,使用EF的TPT架构不会创建必要的ON DELETE CASCADE ....还有人说,EF上下文将处理删除子的正确顺序-classed表(但我得到一个错误,它打破了约束,我可以通过在子类表上添加ON DELETE CASCADE来修复它)...

更多背景信息......

我有一个Section类,它有一个数字,标题和一个页面列表.该页面使用一个包含基本页面属性的超类来设计.我有大约10个以上的页面类子类.Section类包含这些页面的ICollection.除了在子类表上没有ON DELETE CASCADE之外,DB正确创建.

我的代码将创建实体并添加到数据库中.但是,如果我尝试删除一个部分(或所有部分),由于我的子类页面表上的FK约束,它无法删除...

public abstract BaseContent 
{
... common properties which are Ignored in the DB ...
}

public class Course : BaseContent
{
    public int Id {get;set;}
    public string Name {get;set;}
    public string Descripiton {get;set;}
    public virtual ICollection<Chapter> Chapters{get;set;}
    ...
}

public class Chapter : BaseContent
{
    public int Id {get;set;}
    public int Number {get;set;}
    public string Title {get;set;}
    public virtual Course MyCourse{get;set;}
    public virtual ICollection<Section> Sections{get;set;}
    ...
}

public class …
Run Code Online (Sandbox Code Playgroud)

entity-framework

10
推荐指数
1
解决办法
1959
查看次数

如何在代码中首先启用TPT(每种类型的表)继承中的级联删除?

我使用EF代码优先和TPT(每类型表)继承.我有以下型号:

public partial class AccountHolder
{
    public int AccountHolderId { get; set; }

    public virtual Address Detail { get; set; }  
    public virtual Nominee Nominee { get; set; }   
}

public partial class Nominee
{
    public int NomineeId { get; set; }             
}

public abstract class Address
{
    public int AddressId { get; set; }
    ...
}

public class PersonalDetail : Address
{
    public int PersonalDetailId { get; set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

流利的api:

        modelBuilder.Entity<AccountHolder>().HasOptional(p => p.Nominee)
                                            .WithRequired()
                                            .WillCascadeOnDelete();
Run Code Online (Sandbox Code Playgroud)

根据本教程, …

c# sql code-first

9
推荐指数
1
解决办法
2018
查看次数

实体框架6代码优先 - 关于树结构的评论

我正在尝试在我的数据模型(实体框架6,代码优先方法)中实现异构关联.

我有一个现有的类结构,让我们称之为Tree,BranchLeaf.A Tree可以有许多Branch对象,并且Branch可以包含许多Leaf对象.三个级别之间的关系具有cascade-delete行为(删除分支,您还删除叶子等).

现在,我试图让用户在每个级别上添加类似注释的对象.我有一些与数据建模有关的问题,因为我希望3种实体类型中的每一种都能够有很多注释,每条注释都属于一个且只有一个条目.我也希望所有评论都在同一张表中.我尝试了两种不同的方法:


Alt键.1

实现继承使得Comment(摘要)可以是一个TreeComment,BranchComment或者LeafComment,下面的每层次结构表(TPH)的方法(如看到的那样,例如,在这里),其具有一个抽象类(的Comment征求意见),然后将其导出到TreeComment,BranchComment等这是通过编码这样的模型来实现的:

public abstract class Comment
{
    // ID
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid ID { get; set; }
}

public class TreeComment: Comment
{
    // Foreign Keys
    public Guid TreeID { get; set; }

    // Navigation Properties
    public virtual Tree …
Run Code Online (Sandbox Code Playgroud)

c# sql-server asp.net-mvc entity-framework data-modeling

6
推荐指数
1
解决办法
2372
查看次数