从XML迭代并将数据保存到数据库

时间:2018-01-07 13:01:56

标签: c# sql-server asp.net-mvc

我正在迭代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; }
}

1 个答案:

答案 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)