C# EntityFramework核心中的数据库更新异常
我正在写一个.Net标准库。我想使用实体框架来执行DB操作。为了执行DB操作,我想使用实体框架C# EntityFramework核心中的数据库更新异常,c#,entity-framework,.net-standard-2.0,C#,Entity Framework,.net Standard 2.0,我正在写一个.Net标准库。我想使用实体框架来执行DB操作。为了执行DB操作,我想使用实体框架 //Intro.cs in SQLiteExample(.NetStandard library) namespace SQLiteExample { internal class BloggingContext : DbContext { public DbSet<Blog> Blogs { get; set; } public DbSet
//Intro.cs in SQLiteExample(.NetStandard library)
namespace SQLiteExample
{
internal class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
options.UseSqlite("Data Source=blogging.db");
}
}
public class BlogOperations
{
BloggingContext bloggingContext = new BloggingContext();
public async void CreateBlog(string url)
{
using (var db = bloggingContext)
{
Console.WriteLine("Inserting a new blog");
db.Add(new Blog { Url = url });
await db.SaveChangesAsync();
}
}
public async void CreateBlogWithPost(String url, string title, string content)
{
using (var db = bloggingContext)
{
Console.WriteLine("Inserting a new Blog with a post");
Post post = new Post
{
Title = title,
Content = content
};
Blog blog = new Blog
{
Url = url
};
blog.Posts.Add(post);
db.Add(blog);
await db.SaveChangesAsync();
}
}
public async Task<Blog> ReadBlogs()
{
using (var db = bloggingContext)
{
Console.WriteLine("Querying for a blog");
Blog blog = await db.Blogs
.OrderBy(b => b.BlogId)
.FirstAsync();
return blog;
}
}
public List<Blog> ReadAllBlogs()
{
using (var db = bloggingContext)
{
var blogs = db.Blogs
.OrderBy(b => b.BlogId)
.ToList();
return blogs;
}
}
public async void UpdateBlog(string url, string title, string content)
{
Console.WriteLine("Updating the blog and adding a post");
var db = bloggingContext;
var blog = await db.Blogs
.OrderBy(b => b.BlogId)
.FirstAsync();
blog.Url = url;
blog.Posts.Add(
new Post
{
Title = title,
Content = content
});
await db.SaveChangesAsync();
}
public async void DeleteFirstBlog()
{
Console.WriteLine("Delete the blog");
var db = bloggingContext;
var blog = db.Blogs
.OrderBy(b => b.BlogId)
.FirstAsync();
db.Remove(blog);
await db.SaveChangesAsync();
}
public void DeleteSpecificBlog(string url)
{
var db = bloggingContext;
var blog = db.Blogs
.Where( b => String.Equals(b.Url, url))
.First();
}
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public int Rating { get; set; }
public List<Post> Posts { get; set; }
public override string ToString()
{
string str = "";
str += "Url" + Url + "\n";
str += "Rating" + Rating + "\n Posts: \n";
foreach(Post post in Posts)
{
str += "Title" + post.Title + ",";
str += "Post" + post.Content + "\n";
}
return str;
}
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
}
单击按钮后,我得到以下错误:
见此,请至少分享一些代码或参考示例,以便在尝试执行CRUD操作时发现上述错误。
private void Button_Click(object sender, RoutedEventArgs e)
{
blogOperations.CreateBlog(UrlTb.Text);
}