如何在 Linq to Sql 中映射自定义类型?

Dav*_*enn 3 c# linq-to-sql

我有一个包含属性 MyProperty 的 Customer 类,该属性属于自定义类型 MyCustomType。我想将属性值作为文本保存在数据库中。在设计器中,我将类型设置为“MyType”,将服务器数据类型设置为“varchar(10)”。当我构建项目时,我收到以下错误:

DBML1005: Mapping between DbType 'varchar(10)' and Type 'MyType' in 
Column 'MyProperty' of Type 'Customer' is not supported.
Run Code Online (Sandbox Code Playgroud)

现在这是有道理的,因为 Linq to Sql 无法知道如何转换我的自定义类型。所以我假设我必须在 MyCustomType 上实现某种 Parse(string) 和 ToString() 方法,但是我找不到任何相关文档。

那么,如何将 Linq 中的自定义类型映射到 Sql?

Mar*_*ell 5

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;}
Run Code Online (Sandbox Code Playgroud)

(即读取或更新您的实际MyProperty财产)

我还希望您必须将其留给设计者,并自己将其(和MyProperty属性)添加到部分类中。