PostgreSQLで型を配列にしたとき、Entity Frameworkで追加、更新するのにハマったのでメモ。
成功
配列では宣言しない。
文字列型も数値型もstringで宣言する。
[Column("data")]
public string Data { get; set; } // text[]
[Column("data2")]
public string Data2 { get; set; } // integer[]
var t2 = dbContext.Test2s.Single(x => x.Id == 0);
t2.Data = "{\"a\",\"b\"}"; // text[]
t2.Data2 = "{0,1,2}"; // integer[]
dbContext.SaveChanges();
失敗
Entityクラス側でも配列で宣言して、配列をgetsetするものだと思っていたが、それだとDBが更新されなかった。
エラーは出ない。
dbContext.SaveChanges();の戻り値は0なので成功している・・・?
[Column("data")]
public string[] _Data;
public string[] Data {
get {
return _Data;
}
set {
_Data = value;
}
}
t2.Data = new string[] { "a", "b", "c" };
dbContext.SaveChanges(); // エラーは出ないがDBに反映されない・・・