C# 实体框架插入在SQL Server LocalDB中生成空列
我正在使用实体框架5执行插入操作 我的代码从用户输入中插入新行,并在另一个方法中解析值。调试操作显示,在调用insert操作之前,所有对象属性都有一个值,代码执行时没有任何异常,行在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 =>
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查询来获取空列的内容