Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过Entity Framework 6在SQL Server 2014中存储长文本(约4000000个字符)_C#_Sql Server_Entity Framework - Fatal编程技术网

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:更新了我的回答,假设
文章
已经存在,并已加载到其他地方,以保存在此方法中
条目
将实体附加到上下文中。