いいえ、アイテムのコレクションをbyte []として保存するようにEFに直接指示することはできないと思いますが、少し回避策を使用できます。
NotMapped
プロパティに属性を追加 します。これによりUrls
、EFモデルからプロパティが除外SerializedUrls
され、byte []としてシリアル化されたコレクションを含む別のプロパティが追加され、DBに保存されます。最後に、 getter/setterを介してプロパティを同期Urls
します。SerializedUrls
private byte[] _serializedUrls;
private ICollection<Url> _urls;
public byte[] SerializedUrls {
get { return _serializedUrls; }
set {
_urls = this.Deserialize(value);
_serializedUrls = value;
}
}
[NotMapped]
public ICollection<Url> Urls {
get { return _urls; }
set {
_urls = value;
_serializedUrls = this.Serialize(value);
}
}
private byte[] Serialize(ICollection<Url> collection) {
//call protobuf to serialize data
}
private ICollection<Url> Deserialize(byte[] data) {
//call protobuf to deserialize data
}
public void UpdateSerializedValue() {
serializedUrls = this.Serialize(_urls);
}
注:コレクション内のアイテムを追加/削除/変更すると、コレクションのバイナリ表現が変更されるため、コレクションのSerializedUrls
コンテンツが変更された場合は必ず更新してください。