Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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# 实体框架插入在SQL Server LocalDB中生成空列_C#_Sql Server_Entity Framework_Ef Code First - Fatal编程技术网

C# 实体框架插入在SQL Server LocalDB中生成空列

C# 实体框架插入在SQL Server LocalDB中生成空列,c#,sql-server,entity-framework,ef-code-first,C#,Sql Server,Entity Framework,Ef Code First,我正在使用实体框架5执行插入操作 我的代码从用户输入中插入新行,并在另一个方法中解析值。调试操作显示,在调用insert操作之前,所有对象属性都有一个值,代码执行时没有任何异常,行在LocalDb中更新,但内容列值丢失或从未保存 以下是我的实体框架代码: public async Task<IHttpActionResult> PostFormData() { var profile = db.ProfileRepository.dbSet.Where(m =>

我正在使用实体框架5执行插入操作

我的代码从用户输入中插入新行,并在另一个方法中解析值。调试操作显示,在调用insert操作之前,所有对象属性都有一个值,代码执行时没有任何异常,行在LocalDb中更新,但内容列值丢失或从未保存

以下是我的实体框架代码:

public async Task<IHttpActionResult> PostFormData()
{
        var profile = db.ProfileRepository.dbSet.Where(m => m.profileId == 1).FirstOrDefaultAsync().Result;

        if (!Request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }

        var research = new Research();
        research.profile = profile;
        string root = HttpContext.Current.Server.MapPath("~/documentSafe");
        var provider = new MultipartFormDataStreamProvider(root);

        try
        {
            // Read the form data.
            await Request.Content.ReadAsMultipartAsync(provider);

            research.title = provider.FormData["title"];
            research.researchAbstract = provider.FormData["researchAbstract"];
            research.publisher = provider.FormData["publisher"];
            var areaList = new List<ResearchArea>();
            string areas = provider.FormData["researchArea"];

            foreach (var r in areas.Split(','))
            {
                var area = new ResearchArea()
                {
                    name = r,
                    departmentId = profile.departmentId
                };
                areaList.Add(area);
            }

            research.researchArea = areaList;

            research.researchType = new ResearchType()
            {
                name = provider.FormData["type"]
            };

            string content = WebUtility.HtmlEncode(parser.convert(provider.FileData[0]));
            research.content = content;

            using (var context = new AcademicContext())
            {
                context.Research.Add(research);
                await context.SaveChangesAsync();                  
            }

            return Ok(); 
        }
        catch (System.Exception e)
        {
            return InternalServerError(e);
        }
    }
缺少的列是使用webutility编码的已解析html字符串,平均大小为15000个字符。我也检查了数据库列属性,它被设置为nvarcharMAX

如果我向列中插入一个示例纯文本,则会保存该值,但如果我传递编码的html字符串,则不会保存该值

任何关于为什么我的列不为null但仍然不包含任何值的建议

解决方案:当字符大小大于4000时,visual studio中的sql server资源管理器似乎显示一个空列。为了验证这一点,我进行了多次测试。我可以通过运行原始sql select查询来获取空列的内容