我需要在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数据库中存储一组字节的最佳方法(并且希望处理成本低廉)是什么?
答案 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
将它们与你想要的相关联。