C# 如何通过Entity Framework 6在SQL Server 2014中存储长文本(约4000000个字符)
当我试图在映射到C# 如何通过Entity Framework 6在SQL Server 2014中存储长文本(约4000000个字符),c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,当我试图在映射到nvarchar(max)列的数据库表中保存我的Article对象时,Entity Framework无法将该字符串的值从C#应用程序发送到数据库 我怎样才能解决这个问题 这是我的模型 public class Article { public int Id { get; set; } public string Authors { get; set; } } 这是省钱的部分 private void EditDatabase(Article article)
nvarchar(max)
列的数据库表中保存我的Article
对象时,Entity Framework无法将该字符串的值从C#应用程序发送到数据库
我怎样才能解决这个问题
这是我的模型
public class Article
{
public int Id { get; set; }
public string Authors { get; set; }
}
这是省钱的部分
private void EditDatabase(Article article)
{
try
{
var db = new ArticleContext();
db.Entry(article).State = EntityState.Modified;
db.SaveChanges();
db.Dispose();
}
catch (Exception ex) { }
}
你以前是不是刚刚创建了
文章
对象?还是从数据库中检索到的
无论如何-您只是更改它的状态-但您没有将它附加到上下文中-因此它不会被保存:
private void EditDatabase(Article article)
{
try
{
using (var db = new ArticleContext())
{
// assuming you're *created* that "article" from scratch
// then you need to **ADD** it to the context first, to save it!
db.Articles.Add(article);
// this won't be needed
// db.Entry(article).State = EntityState.Modified;
db.SaveChanges();
}
}
catch(Exception exc)
{
// Log your exception
}
}
更新:
如果该文章
在传递到EditDatabase
之前已存储在数据库中并由另一个上下文处理,则必须将该先前存在的数据库对象附加到您创建的新上下文中,并将其状态
设置为已修改
:
private void EditDatabase(Article article)
{
try
{
using (var db = new ArticleContext())
{
// assuming this "article" has been loaded from the database
// by another context before, then you need to **ATTACH** it
// to this current context before you can save it here!
db.Articles.Attach(article);
db.Entry(article).State = EntityState.Modified;
db.SaveChanges();
}
}
catch(Exception exc)
{
// Log your exception
}
}
您应该将列类型设置为
nvarchar(max)
我使用sqlserver2014,我的列类型为nvarchar(max),但无法保存此长文本。请发布一些代码好吗?错误是什么?我没有任何错误,只是不能用EntityFramework在数据库中存储长数据。你怎么知道你不能?请在试图保存实体的位置发布代码。我的模型中有更多字段逐步存储在数据库中。这意味着其中一些字段首先添加到数据库中,然后我再次搜索,其他字段(如“authors”)再次添加,因此我使用“db.Entry(article).State”对于edit@mahtab:更新了我的回答,假设文章
已经存在,并已加载到其他地方,以保存在此方法中条目
将实体附加到上下文中。