在我的域中,NULL和空字符串之间没有重要的区别。如何让EF忽略两者之间的差异并始终将空字符串保留为NULL?所以这意味着你的代码是什么地方设置空字符串如何获得EF将空字符串保留为NULL?
4
A
回答
5
空字符串不是默认字符串属性值。在这种情况下,您有责任处理它。
如果使用代码首先波苏斯您可以使用定制的setter:
private string _myProperty;
public string MyProperty
{
get { return _myProperty; }
set
{
if (value == String.Empty)
{
_myProperty = null;
}
else
{
_myProperty = value;
}
}
}
+0
请看看[我的功能](http://stackoverflow.com/a/9187411/75500),我很乐意听到类似专家的一两个提示您。 – Shimmy 2012-02-08 03:18:39
0
这不是实体框架的工作。
你应该这样做在你的仓库,或与触发器数据库。
,或者在开始做(例如,当数据到来时,UI,外部电源等)
3
这是一个功能,我把我的DbContext
子替换为空或空白字符串用空。
我还是没有优化就那么任何性能的提示将非常赞赏。
private const string StringType = "String";
private const EntityState SavingState = EntityState.Added | EntityState.Modified;
public override int SaveChanges()
{
var objectContext = ((IObjectContextAdapter)this).ObjectContext;
var savingEntries =
objectContext.ObjectStateManager.GetObjectStateEntries(SavingState);
foreach (var entry in savingEntries)
{
var curValues = entry.CurrentValues;
var fieldMetadata = curValues.DataRecordInfo.FieldMetadata;
var stringFields = fieldMetadata.Where(f =>
f.FieldType.TypeUsage.EdmType.Name == StringType);
foreach (var stringField in stringFields)
{
var ordinal = stringField.Ordinal;
var curValue = curValues[ordinal] as string;
if (curValue != null && curValue.All(char.IsWhiteSpace))
curValues.SetValue(ordinal, null);
}
}
return base.SaveChanges();
}
优化方面的考虑:
- 识别比字符串比较不同方式
string
类型属性我想查找的一些枚举内置类型,但没有找到 - 对于缓存类型字符串字段(也许是不必要的,将有反编译,看看原来的IMPL通过实体类型,备份重复实体类型确实
- 无序结果,如果下一个迭代的实体是同一类型,使用以前metad ATA,再次,如果元数据是反正有,性能更便宜的它是空白支票
- 限制字符串长度的方式 - 如果即一个字符串长度> X,跳过检查是否它是一个空白字符串或不
我正在使用Silverlight,而UI中的TextBox
es将所有字符串属性设置为空字符串。
我试过设置:
<TextBox
Text="{Binding MyStringProperty,
Mode=TwoWay,
ValidatesOnDataErrors=True,
TargetNullValue=''}"/>
但它并没有多大帮助。
相关问题
- 1. jackson serializer cover字符串null为空String(“”)并保留object null为空
- 2. 将字符串设置为“”或将其保留为空?
- 3. 如何将字符串拆分为字符,但在javascript中保留空格
- 4. mssql_bind将空字符串转换为NULL
- 5. 如何让模型联编程序将空字符串保留为空?
- 6. 将JPA保留为字符串
- 7. Moshi/Kotlin - 如何将NULL JSON字符串序列化为空字符串?
- 8. 将`NULL`转换为字符串(空或者字面上`NULL`)
- 9. 如何保护EF连接字符串?
- 10. 替换字符串,但保留空格
- 11. 如何在表中将所有空字符串更改为NULL?
- 12. 如何将asp.net NULL值转换为“”(空字符串)
- 13. 如何使用automapper将空字符串映射为null?
- 14. 如何将NULL值更改为空字符串?
- 15. ODBC:如何在C++中将空字符串绑定为null
- 16. 如何将空字符串转换为空字符串json.net
- 17. 如何获得Image.Source作为字符串
- 18. 如何爆炸并保留字符串中的空白?
- 19. 映射空字符串为NULL NHibernate的
- 20. 空作为字符串发送“null”
- 21. 如何将ofn.lpstrFile保存为字符串?
- 22. 空字符串对NULL
- 23. c#空字符串 - > null?
- 24. Sed实用程序的模式空间和保留空间的初始化值为null或空字符串?
- 25. 如何将非空字符串数组转换为字符串?
- 26. 为什么DB2将空字符串视为null?
- 27. 将字符串转换为十进制 - 保留数字
- 28. 如何在Excel VBA中将数字转换为字符串时保留NumberFormat?
- 29. 如何为PartialViewResult返回空字符串(或null)?
- 30. 如何检查C#变量是否为空字符串“”或null?
的可能重复[有没有做实体框架恢复空字符串为空的选项?(http://stackoverflow.com/questions/1119615/is-there-an-option-to-make-entity-framework -revert-empty-strings-to-null) – 2014-08-18 18:09:36