【问题标题】:How do i save new entities and handle junction table entities with breezejs and entity framework我如何保存新实体和处理连接表实体与轻风和实体框架
【发布时间】:2015-03-03 03:26:19
【问题描述】:

假设我有以下三个表:

public class Book
{
    public int Id { get; set; }
    public string Title { get; set; }

    public virtual ICollection<BookAuthor> BookAuthors { get; set; }
}

public class Author
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public virtual ICollection<BookAuthor> AuthorBooks { get; set; }
}

public class BookAuthor
{
    public int Id { get; set; }
    public int BookId { get; set; }
    public Book Book { get; set; }

    public int AuthorId { get; set; }
    public Author Author { get; set; }
}

使用以下映射配置:

 public BookAuthorConfiguration()
    {
        // BookAuthor has a composite key: 
        HasKey(a => new { a.BookId, a.AuthorId });

        // BookAuthor has 1 Book, Books have many BookAuthor records
        HasRequired(a => a.Book)
            .WithMany(s => s.BookAuthors)
            .HasForeignKey(a => a.BookId)
            .WillCascadeOnDelete(false);

        // BookAuthor has 1 Author, Author have many BookAuthor records
        HasRequired(a => a.Author)
            .WithMany(p => p.AuthorBooks)
            .HasForeignKey(a => a.AuthorId)
            .WillCascadeOnDelete(false);
    }

我现在想做的是在我的连接 BookAuthor 表中创建一本新书和一个新注册表,我不知道微风会自动做什么以及我必须自己做什么。

如果已经创建了 Author,我是否要创建两个新实体 Book 和 BookAuthor,设置 BookAuthor 的属性(BookId,AuthorId,Book,Author),然后推送新创建的 Book 实体的 BookAuthors 数组,还是我结束了干吗?

我希望我为您提供了足够的信息,如果没有让我知道缺少什么。

提前致谢!

【问题讨论】:

  • 虽然不是答案,但我想知道 BookAuthor.Id 属性的意义何在?当你有一个组合键 {BookId, AuthorId} 时,它没有明显的用途。

标签: entity-framework ef-code-first breeze


【解决方案1】:

Breeze 不支持“多对多”,因此您必须将联结表作为一个实体公开。 EF 将为您强制执行此操作,因为您添加了一个属性 (Id),而不是支持 m-to-m 关系的 FK。

您必须自己在 Breeze 客户端上管理该联结实体。

有一个流行的请求,即 Breeze 在 User Voice 中支持 m-to-m。话虽如此,我们并没有为此努力,我对尝试它的价值表示怀疑。

Search StackOverflow for "Breeze" and "many to many" 你会发现很多讨论。

【讨论】:

  • 相信我,我确实搜索过它,而且很多。并且确实发现我必须在客户端自己处理 BookAuthor 身份。在我看来,我认为它很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-20
相关资源
最近更新 更多