我正在迭代XML文件并尝试将每个数据保存到数据库中,但它没有保存在我的表中。迭代和从XML检索数据工作正常。
控制器:
List<ListingsModel> xlist = new List<ListingsModel>();
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("~/xml/listing.xml"));
foreach (XmlNode node in doc.SelectNodes("/Listings/Listing"))
{
xlist.Add(new ListingsModel
{
Ad_Type = node["Type_Type"].InnerText,
Unit_Type = node["Unit_Type"].InnerText
});
}
AppTestDBConn db = new AppTestDBConn();
listing tbllisting = new listing();
ListingsModel mymodel = new ListingsModel();
tbllisting.listtype = mymodel.Ad_Type;
tbllisting.communityName = mymodel.Community;
db.listings.Add(tbllisting);
db.SaveChanges();
模特课:
public class ListingsModel
{
public string Ad_Type { get; set; }
public string Unit_Type { get; set; }
}
答案 0 :(得分:0)
您正在将所有xml读入xlist
,但在此之后您还没有使用该列表。而是创建一个新的ListingsModel
并将其添加到数据库中。
将您的代码更改为
List<ListingsModel> xlist = new List<ListingsModel>();
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("~/xml/listing.xml"));
foreach (XmlNode node in doc.SelectNodes("/Listings/Listing"))
{
xlist.Add(new ListingsModel
{
Ad_Type = node["Type_Type"].InnerText,
Unit_Type = node["Unit_Type"].InnerText
});
}
AppTestDBConn db = new AppTestDBConn();
db.listings.AddRange(xlist);
db.SaveChanges();
我还建议添加一些异常处理。
<强>更新强>
根据错误消息OP为xml加载和实体使用不同的类。在执行AddRange之前,您需要在两者之间进行转换。由于你没有提供课程,我无法告诉你如何做到这一点。
还修复了代码中的错误,忘了将dbset添加到上下文中(db.listings.AddRange(xlist)
)