我正在使用實體框架,並計劃在我的數據庫中可以存儲任何數據(基本上是對象類型)的表中的一個表中有一列,所以我創建了一個類,但是它沒有不會將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);
}
定義一個字符串長度,但用'object'而不是'string'作爲類型的意義是什麼?如果你想存儲字符串,使用'string'類型。如果你想存儲整數,使用int或long。你是否想解決一些其他的問題,並認爲用'object'替換'string'可能有幫助? –
我認爲它是[sql_variant](https://msdn.microsoft.com/en-us/library/ms173829.aspx)。 –
你想創建一個鍵/值表嗎?這被認爲是反模式。你也不需要它。您可以使用SQL Server中的稀疏列來定義大量的列(> 30000)。如果只需要少數幾列,這將節省大量的空間。如果您只想檢索單個實體的屬性,則還可以避免搜索整個表格 –