【发布时间】:2016-11-09 14:27:51
【问题描述】:
我正在尝试在 Visual Studio 中使用 EntityFrameWork 5 将数据插入 MariaDB。我在服务器本身上创建了数据库,并在 Visual Studio 中导入了模型。我正在使用三个表,它们是链接的。
排水表、项目表和标签表。
实体为:drawing (many---1) project (1---many) tag。
对于插入,我使用下面的代码。但它会抛出一个 DbUpdateEntityException ,告诉他无法匹配绘图和项目表之间的键,因为两个或多个主键相同。我使用特定的主键进行数据绘图,这与表中的其他对象绝对不同。其他主键是 AUTO_INCREMENT 所以我猜它试图插入一个新项目,但项目编号相同但不起作用,但我真的不明白它为什么这样做。
DateTime aktuellesDatum = DateTime.Now;
using (DMSContext db = new DMSContext())
{
foreach (ZeichnungInDB zeichnungInDB in zeichnungen)
{
zeichnungInDB.Volante_Index = getVolCountByDrawingNumber(zeichnungInDB.Zeichnungsnummer) + 1;
var zeichnung = new zeichnung()
{
Zeichnung_ID = zeichnungInDB.Dateiname + "_" + zeichnungInDB.Index + "_VOL_" + zeichnungInDB.Volante_Index + "_" + aktuellesDatum.ToShortDateString(),
Baugruppe = zeichnungInDB.Baugruppe,
Baugruppe_Hauptzeichnung = zeichnungInDB.Baugruppe_Hauptzeichnung,
Zeichnungsnummer = zeichnungInDB.Zeichnungsnummer,
Index = zeichnungInDB.Index,
Dateiname_Org = zeichnungInDB.Dateiname,
Aenderung_Ext = zeichnungInDB.Aenderung_Ext,
Aenderung_Int = "AE_" + zeichnungInDB.Projektnummer + aktuellesDatum,
Dokumententyp = zeichnungInDB.DokumentenTyp,
Dateiendung = zeichnungInDB.Extension,
Volante_Index = zeichnungInDB.Volante_Index,
MMS_Sachmerkmal = zeichnungInDB.Mms_Sachmerkmal,
Status = zeichnungInDB.Status,
Aenderung_Bemerkung_Txt = zeichnungInDB.Aenderung_Bemerkung_Text,
Einzel_Bemerkung_Txt = zeichnungInDB.Einzel_Bemerkung,
Ahang_Link = zeichnungInDB.Anhang_Link,
Einzel_Link = zeichnungInDB.Einzel_Link,
};
var projekt = new projekt()
{
Projektnummer = zeichnungInDB.Projektnummer,
};
var tag = new tag()
{
Tag1 = zeichnungInDB.Tag,
};
db.zeichnungs.Add(zeichnung);
db.projekts.Add(projekt);
db.tags.Add(tag);
}
try
{
db.SaveChanges();
}
catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
{
Exception raise = dbEx;
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
string message = string.Format("{0}:{1}",
validationErrors.Entry.Entity.ToString(),
validationError.ErrorMessage);
// raise a new exception nesting
// the current instance as InnerException
raise = new InvalidOperationException(message, raise);
}
}
throw raise;
}
}
也许有人有问题所在的想法或解决方案。 (“ZeichnungInDB”是自定义对象,“zeichnungen”是 ObservableCollection)
另一个问题我有一个日期时间字段,即 CURRENT_TIMESTSAMP,但它只显示 0000-00-00 00:00:00 这是为什么?
【问题讨论】:
标签: c# mysql entity-framework mariadb