Quy trình lưu trữ này không lưu dữ liệu, có vẻ như đó là vấn đề với VARBINARY
. Tôi đang chuyển một số byte[]
cho nó, nhưng sau đó nó không hoạt động. Nếu tôi gửi tham số này là NULL
thì nó hoạt động.Làm thế nào để lưu byte [] bằng cách sử dụng một thủ tục?
Tôi kêu gọi các thủ tục với đoạn mã sau:
public Community AddCommunity(string name, string description, byte[] picture, User owner, int? venue, int communityID)
{
using (var database = new Database())
{
return database.Scope.GetSqlQuery<Community>("QP_AddCommunity ?, ?, ?, ?, ?, ?", "VARCHAR Name, VARCHAR Description, VARBINARY Picture, INTEGER Owner, INTEGER Venue, INTEGER ID").GetResult(name, description, picture, owner.ID, venue, communityID);
}
}
Thủ tục như sau:
CREATE PROCEDURE [dbo].[QP_AddCommunity]
@Name VARCHAR(120),
@Description VARCHAR(MAX),
@Picture VARBINARY(MAX),
@Owner INTEGER,
@Venue INTEGER,
@ID INTEGER
AS
BEGIN
SET NOCOUNT ON;
IF(SELECT COUNT(*) FROM QT_Community WHERE ID = @ID) = 0
INSERT INTO QT_Community(Name, [Description], Picture, [Owner], Venue) VALUES(@Name, @Description, @Picture, @Owner, @Venue);
ELSE
UPDATE QT_Community SET Name = @Name, [Description] = @Description, Picture = @Picture, [Owner] = @Owner, Venue = @Venue WHERE ID = @ID;
SELECT * FROM QT_Community WHERE ID = @@IDENTITY;
END
Có gì sai với mã này? Không phải là VARBINARY
a byte[]
?
Mã này hoạt động khi thực thi trên SQL Server Management Studio.
DECLARE @X varbinary(20)
Set @X = CAST('Testing' As varbinary(20))
EXECUTE [QP_AddCommunity] 'aaaaa', 'descricao', @X, 216, NULL, 0;
Nhưng khi gọi từ phương pháp GetSqlQuery
với một cái gì đó trên byte[]
giao dịch nói nó không hoạt động và không bẩn. NHƯNG nếu byte[]
là null
, nó hoạt động như bình thường.
Xác định 'không hoạt động'. Bạn có mắc lỗi gì không? Công việc chèn/cập nhật có bị thiếu hình ảnh không? Công việc chèn/cập nhật và ảnh có bị hỏng không? btw, mã kiểm tra COUNT (*) và sau đó chèn hoặc cập nhật được chia theo đồng thời. Bạn nên sử dụng 'MERGE' http://technet.microsoft.com/en-us/library/bb510625.aspx –
' CommandParameter' ở đâu? –