当绑定到任何控件(例如“FormView”)时,任何人都可以可靠地获取EntityDataSource以将可为空的列保存为数据库“null”吗?
我尝试过使用几种不同的UpdateParameters(SessionParameter,ControlParamater,Parameter等)。我已经尝试将“ConvertEmptyStringToNull”设置为true并完全关闭该属性。什么都行不通。在我的“插入”它工作正常(但显然插入一条记录,如果没有值,它必须插入“东西”。)
(我确保在实体设计器中将列设置为nullable = true)。
我尝试将该列绑定到标签并将标签的文本值设置为“”。
在所有这些情况下,我可以成功地将列设置为值,而不是为NULL。
答案 0 :(得分:1)
我有类似的问题。
我刚发现的唯一解决方法是在ItemUpdated事件中重新加载对象。检查我想要设置为null的值是否为null,如果是这种情况,请将该值再次设置为null。像那样:
protected void FormView1_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
{
// Use the Exception property to determine whether an exception
// occurred during the insert operation.
if (e.Exception != null)
{
// handle the exception
}
else
{
//force the suppression of the foreign key relation
using (var context = new ProxiEntities())
{
//reload my object
var id = Convert.ToInt32(e.Keys["SessionID"]);
var session = (from o in context.Sessions
where o.SessionID == id
select o).FirstOrDefault();
try
{
//check if I wanted to set a value to null
if (e.NewValues["MagasinID"] == null)
{
//if yes, set it to null and save
session.MagasinID = null;
}
if (e.NewValues["LieuID"] == null)
{
session.LieuID = null;
}
context.SaveChanges();
}
catch (Exception)
{
//Add code to log the error.
}
}
}
}
这是我找到解决方法的唯一方法。这似乎也是一个不寻常的问题。你是我唯一能找到的人。