我有一个Customer类,其中包含一个属性MyProperty,它是自定义类型MyCustomType。我想将属性值以文本形式保留在数据库中。在设计器中,我将“类型”设置为“ MyType”,将服务器数据类型设置为“ varchar(10)”。生成项目时,出现以下错误:
DBML1005: Mapping between DbType 'varchar(10)' and Type 'MyType' in
Column 'MyProperty' of Type 'Customer' is not supported.
现在这很有意义,因为Linq to Sql无法知道如何转换我的自定义类型。所以我假设我必须在MyCustomType上实现某种Parse(string)和ToString()方法,但是我找不到关于它的任何文档。
那么,如何将Linq中的自定义类型映射到Sql?
最佳答案
varchar类?我不知道任何在LINQ-to-SQL中支持此功能的功能。最好的选择可能是使用简单的属性(如果需要,可以将其设为私有):
[Column(Name="ColumnName", DbType="varchar(10) NULL", CanBeNull=true)]
private string MyPropertyString {
get { /* serialize MyProperty yourself */ }
set { /* deserialize MyProperty yourself */ }
}
public MyCustomType MyProperty {get;set;}
(即读取或更新您的实际
MyProperty
属性)我还希望您不必将其保留在设计器中,而是将自己(和
MyProperty
属性)添加到局部类中。