【发布时间】:2016-08-01 13:39:14
【问题描述】:
我正在使用 Entity Framework 7 RC1,我有这些实体:
public class Book
{
[Key]
public string BookId { get; set; }
public List<BookPage> Pages { get; set; }
public Author Author { get; set; }
public string Text { get; set; }
}
public class BookPage
{
[Key]
public string BookPageId { get; set; }
public int Number { get; set; }
}
public class Author
{
[Key]
public string AuthorId { get; set; }
public string FullName { get; set; }
}
ApplicationDbContext.cs 是默认的,public DbSet<Book> Books { get; set; }
当我尝试插入新书时,像这样
var book = new Book()
{
BookId = Guid.NewGuid().ToString(),
Pages = new List<BookPage>()
{
new BookPage()
{
BookPageId = Guid.NewGuid().ToString(),
Number = 1
}
},
Author = new Author()
{
AuthorId = Guid.NewGuid().ToString(),
FullName = "Forexample"
},
Text = "new book"
};
dbContext.Books.Add(book);
dbContext.SaveChanges();
抛出异常:
SqlException:INSERT 语句与 FOREIGN KEY 约束“FK_Book_Author_AuthorAuthorId”冲突。
这个简单的插入有什么问题?我不想手动添加 BookPage 和 Author,这是实体框架的工作。
【问题讨论】:
-
记录可能已经存在。
-
@AmitKumarGhosh 不,数据库为空
-
如果您的 id 是 Guid,为什么要使用
string?另外我很确定你必须dbContext.BookPages.AddBookPages 和新的Author相同。 -
尝试先在各自的表中添加 BookPage 和 Author,然后在 Book 的 BookPage 和 Author 中使用相同的 Guid。
-
@PKV 这是一个简单的例子,但是如果我有更多的实体,我应该如何处理它们?手动向数据库添加一百个 if 实体?
标签: c# entity-framework entity-framework-core