实体框架中的字节组

时间:2016-08-18 07:44:03

标签: c# entity-framework bytearray

我需要在Entity Framework表中存储一组字节。我需要在下面存储类似CREATE PROCEDURE demoReplace( @tableName varchar(20), @fieldName varchar(20) ) AS DECLARE @replacementWords table ( oldWord varchar(50), newWord varchar(50) ) INSERT INTO @replacementWords VALUES ('pudding', 'custard') INSERT INTO @replacementWords VALUES ('madras', 'vindaloo') CREATE TABLE #favouriteFoodQuotes ( myFavourite varchar(max) ) INSERT INTO #favouriteFoodQuotes VALUES ('I adore pudding') INSERT INTO #favouriteFoodQuotes VALUES ('My dad eats chicken madras every day') DECLARE @oldWord varchar(50) DECLARE @newWord varchar(50) DECLARE @sql varchar(max) DECLARE repCursor CURSOR FOR SELECT oldWord, newWord FROM @replacementWords OPEN repCursor FETCH NEXT FROM repCursor INTO @oldWord, @newWord WHILE @@FETCH_STATUS = 0 BEGIN SET @sql = 'UPDATE ' + @tableName + ' SET ' + @fieldName + ' = REPLACE(' + @fieldName + ', ''' + @oldWord + ''', ''' + @newWord + ''')' EXEC(@sql) FETCH NEXT FROM repCursor INTO @oldWord, @newWord END CLOSE repCursor DEALLOCATE repCursor SELECT * FROM #favouriteFoodQuotes DROP TABLE #favouriteFoodQuotes --exec demoReplace '#favouriteFoodQuotes', 'myFavourite' 的内容:

AB

但它无声地失败了一个字节List和一个多维/锯齿状的字节数组。我认为他们不受支持。

在EF数据库中存储一组字节的最佳方法(并且希望处理成本低廉)是什么?

1 个答案:

答案 0 :(得分:1)

您可以将字节数组存储在数据库中blob。创建一个类似的模型:

public class DataModel
{
    public int DataModelID { get; set; }
    public byte[] Data { get; set; }
}

然后,您可以将每个字节数组存储为DataModel表中的一行:

// Initialize data
List<DataModel> dataModels = new List<DataModel>
{
    new DataModel { Data = new byte[]{0xFF,0xFF} },
    new DataModel { Data = new byte[]{0x01,0x01} }
};

// Add it to database
using(MyContext context = new MyContext())
{
    context.DataModels.Add(dataModels);
    context.SaveChanges();
}

现在你的数据库中有你的字节数组和它们的PK,你可以使用它们DataModelID将它们与你想要的相关联。