11

type のプロパティを持つ型がある状況がありますobject

public class MyType
{
   public virtual object MyProp{get; get;}
}

このタイプは次のようにする必要があります。

  1. Entity Frameworkとしてデータベースに使用して保存しましたbyte[](シリアライゼーションロジックを理解しました)
  2. WCF 経由で送信 (KnownType属性を使用します)

objectプロパティを確実にマッピングして、ストレージ用にバイト配列に変換するにはどうすればよいですか?

注意:objectプロパティは値型になります (非複雑)

データベースに保存するための別のタイプを作成することを考えました。

public class MyTypeEntity
{
   public virtual byte[] MyProp{get; get;}
}

リレーションシップ マッピングを定義しながら、タイプ間で変換/変換するにはどうすればよいですか?

これには、保存時に何らかの傍受が含まれますか?

背中を痛めずに考えられる最善の解決策は、単純にシリアル化されたデータを DB に格納することです。

C#になんらかの形式があればproperty covariance、おそらくこれはより簡単に機能したでしょう。私の知る限り、それは存在しません。私が使用できるエレガントな代替手段があれば、あなたの洞察に感謝します.

4

1 に答える 1

23

byte[]エンティティにフィールドを保持することをお勧めします。クラスは、データベース構造を可能な限り厳密に模倣する必要があります。過去にこれと似たようなことを行った 1 つの方法は、別のクラス ファイルを作成し (エンティティは であることを思い出してください) 、2 番目のファイルにプロパティをpartial追加することです。NotMappedゲッターとセッターに、コードとの間の変換を行わせることができobjectます。常に、EF が無視するプロパティとbyte[]対話するだけです。objectそれは非常に簡単で、EF は直接アクセスしないvarbinaryフィールドを引き続き追跡します。byte[]

于 2015-03-24T19:19:25.853 に答える