19

かなり単純な質問です。タイプであるプロパティを持つモデルがありますSystem.UriUris には、デフォルトのパラメーターなしのコンストラクターがなく、ID フィールドもありません。モデルの生成をオーバーライドして、DB に独自の方法で (たとえば としてstring) 格納する方法はありますか? NHibernate では、以前に を実装してこれを行っIUserTypeたことがありますが、CodeFirst ではまだ同様のメカニズムを見つけることができませんでした。

明らかにUri、ボンネットの下を使用し、通常のマップ可能なプロパティとコンストラクターを公開するカスタム型を作成できます。このようなラッパーを作成する必要がないように、このシステム型をマップする方法があるかどうかに興味があります。

4

4 に答える 4

9

EF は、NH のようなカスタム型マッピングをサポートしていません。

特に System.Uri の場合は、ラッパー プロパティを使用して、実際の値を文字列としてマップします。それは悪いことではありません。

于 2011-02-18T12:57:59.763 に答える
4

残念ながら、 EF でマップSystem.Uriする直接的な方法はありません。string

ただし、データ注釈を使用して、次のように URL プロパティに属性を付けることができます。

[DataType(DataType.Url)]
public string Link { get; set; }

これにより、これを表示して URL として検証する必要があることを一部のサービスに伝えることができます (たとえば、ASP.NET と Silverlight には、そのサポートが組み込まれています)。

于 2015-01-20T04:07:14.383 に答える
-1

これを試してみてください。

[Column(Name="MyUri", TypeName="string")]
public Uri MyUri

列属性に必要な参照を必ず追加してください

using System.ComponentModel.DataAnnotations;

お役に立てば幸いです...

于 2011-02-18T14:18:22.140 に答える