私はEntity Frameworkを使用していて、データを格納できるデータベース(基本的にはオブジェクト型)にテーブルのいずれかの列を作成する予定であるため、クラスを作成しましたが、 DefaultValue列とMaxValue列をデータベースに追加しました。データベースの列にオブジェクトを格納する
public class AssetDataType
{
public AssetDataType()
{
}
public int Id { get; set; }
[Required, StringLength(100, MinimumLength = 1)]
public string Name { get; set; }
[Required, StringLength(100, MinimumLength = 1)]
public object DefaultValue { get; set; }
[StringLength(100, MinimumLength = 1)]
public object MaxValue { get; set; }
}
これらの列を追加して値を格納するにはどうすればよいですか。私が達成しようとしているアイデアを投稿するには、以下のコードを投稿しています。
protected override void Seed(AppContext context)
{
var assetAttributeType = AddOrUpdateAssetAttributeType(context,
new AssetAttributeType
{
Name = "Integer",
DefaultValue = 0,
MaxValue = int.MaxValue,
});
types.Add(assetAttributeType.Name, assetAttributeType);
var assetAttributeType1 = AddOrUpdateAssetAttributeType(context,
new AssetAttributeType
{
Name = "Boolean",
DefaultValue = false,
});
types.Add(assetAttributeType1.Name, assetAttributeType1);
}
文字列の長さを定義するが、文字列の代わりに 'string'の代わりに' object'を使用する点は何ですか?文字列を格納する場合は、 'string'型を使用します。整数を格納する場合は、intまたはlongを使用します。他の*問題を解決しようとしていますか? 'string'を' object'で置き換えると助けになると思いますか? –
私はそれが[sql_variant](https://msdn.microsoft.com/en-us/library/ms173829.aspx)だと思います。 –
キー/値テーブルを作成しようとしていますか?それは反パターンと見なされます。あなたはそれを必要としません。 SQL Serverのスパース列を使用して、非常に多数の列(> 30000)を定義できます。これにより、ほんの数の列が必要な場合は、スペースの*ロット*を節約できます。単一のエンティティの属性だけを取得する場合は、テーブル全体を検索することも避けてください。 –