我们有一个目前有VARCHAR(1)
列的数据库表。
我们偶尔会对此表进行更改,这需要我们在DBML文件中重新生成对象。我们相应的代码想要将此值称为字符串,但LINQ-to-SQL始终假定它是可空的char。为了解决这个问题,我们必须手动将列设置为DBML设计器中的字符串。我想阻止我们的开发人员在这些类型的字段中意外地使用char而不是字符串。
有没有办法强制Entity Framework为所有CHAR/NCHAR/VARCHAR(1)/NVARCHAR(1)
字段设置字符串?
如果没有办法执行此操作,我们可能会将列更改为VARCHAR(2)
或类似的内容。无论我们决定什么,我们都会传播到几个表,因为多个表正在使用这种类型的列定义。我们必须改变的绝对数量是阻止我们在此时全面实施这一列的原因。
编辑:将“实体框架”更改为“LINQ-to-SQL”
答案 0 :(得分:0)
我有类似的问题。我通过使用POCO T4模板解决了这个问题,并修改了模板以发出一个额外的属性,在设置原始属性之前进行一些检查。 T4模板可以通过使用命名约定来识别需要此字段的字段。这是我博客的链接,我将更详细地描述其工作原理http://nigelfindlater.blogspot.com/2010/04/implementation-of-custom-types-within.html
我想另一种方法可能是创建一个以类似方式添加附加属性的分部类。
我希望这会有所帮助......