При вставке базы данных строк с помощью LINQ, 0
(как int
) преобразуется в NULL
и не отображается в вставной заявлении:LINQ преобразует «0» в NULL в вкладышем
DatabaseCAMAE db = new DatabaseCAMAE(Database.Instance.Connection);
db.Log = Console.Out;
camaeprotocol cpr = new camaeprotocol
{
sid = 0,
prrevision = 0,
ataction = "Scan created",
prdescription = "Scan created",
prtimestamp = DateTime.Now,
uid = 0
};
db.camaeprotocol.InsertOnSubmit(cpr);
db.SubmitChanges();
Где sid
и prrevision
являются первичным ключом.
Бревенчатые выходы:
INSERT INTO "main"."camae_protocol"
("at_action", "pr_description", "pr_timestamp", "u_id")
VALUES (:ataction, :prdescription, :prtimestamp, :uid)
-- :ataction: Input String (Size = 0; Prec = 0; Scale = 0) [Scan created]
-- :prdescription: Input String (Size = 0; Prec = 0; Scale = 0) [Scan created]
-- :prtimestamp: Input DateTime (Size = 0; Prec = 0; Scale = 0) [16.04.2013 07:52:44]
-- :uid: Input Int32 (Size = 0; Prec = 0; Scale = 0) [0]
-- Context: SQLite Model: AttributedMetaModel Build: 0.20.0.0
И возникает исключение (нарушение ограничений), потому что LINQ не пытается вставить 0
sid
и 0
prrevision
. Что делать, чтобы исправить это?
Каковы их типы данных? – Ali
Они оба настоящие «int», а не «int?». – yvesonline
Нет, они не настроены на «auto increment» – yvesonline