gpt4 book ai didi

c# - Entity Framework 向多个表添加数据

转载 作者:行者123 更新时间:2023-11-29 11:11:18 26 4
gpt4 key购买 nike

对于我当前的项目,我想从 ObservableCollection 添加新数据。该集合包含一个大对象,其中包含我使用的三个表的所有属性。我使用 Visual Studio 2015 中的 Entity Framework 5.0、最新版本的 MariaDB 和最新版本的 mysql-connector。不幸的是我还没有找到多个表的例子;只为一个人。所以我尝试了这个,但它总是在 EntityFramework.dll 中抛出 DbEntityValidationException:

foreach(ZeichnungInDB zeichnungInDB in zeichnungen)
{
zeichnungInDB.Volante_Index = getVolCountByDrawingNumber(zeichnungInDB.Zeichnungsnummer)+1;
using (DMSContext db = new DMSContext())
{
var zeichnung = new zeichnung()
{
Zeichnung_ID = zeichnungInDB.Dateiname + "_" + zeichnungInDB.Index + "_VOL_" + zeichnungInDB.Volante_Index + "_" + new DateTime().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 + new DateTime(),
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,
};

//var zeichnung = new zeichnung();
//zeichnung.

db.zeichnungs.Add(zeichnung);
db.projekts.Add(projekt);
db.tags.Add(tag);
db.SaveChanges();
}
}

我知道代码的性能不是那么好。但我只是希望它有效。最好的方法是一步为数据库提供集合,或者如何在一个数据库访问中插入新数据,但我不知道这是否有效,因为我在完成三年教育后辞去了工作。如果有人能解决我的问题,那将会非常有帮助。

干杯,仅3lue

最佳答案

您应该 try catch DbEntityValidationException 并查看哪个输入抛出异常:

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;
}

关于c# - Entity Framework 向多个表添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40502230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com