XDocument使用Linq和Entity Framework将XML数据插入到SQL中

时间:2016-07-09 06:28:29

标签: c# xml asp.net-mvc entity-framework linq

目前以下两个功能都有效。第一个是读取NFL PLayers的XML表并将该XML数据转换为一堆播放器(var播放器),然后第二个函数从第一个函数获取数据并将它们发送到我用EF6创建的表中并更新数据库。我的问题是,有更好的方法吗?

var players = from p in X.Descendants("FantasyPlayer") select new
{
    id = p.Element("PlayerID").Value,
    firstname = p.Element("Name").Value,
    team = p.Element("Team,").Value
};

foreach (var p in players)
{
    var nflplayer = new NFLPlayer();
    nflplayer.ID = Convert.ToInt32(p.id);
    nflplayer.FirstName = p.firstname;
    nflplayer.Team = p.team;
    db.NFLPlayers.Add(nflplayer);
}

db.SaveChanges(); 

我觉得应该有一种方法可以一步完成所有这一切,但还没有能够弄明白......如果有人能提出更好的方法或替代方式,我正在倾听。

2 个答案:

答案 0 :(得分:0)

你有两件事: 1.初始数据采用xml格式 2.数据必须以数据库模式提供的格式保存

所以我在这项任务中至少看到了三个步骤:
1.阅读初始数据
2.准备保存到数据库的数据(从xml转换为数据库模型)
3.保存到数据库

您当前的逻辑正是您需要根据规范执行的操作。

现在,如果您想要这样做,您只能优化代码。

答案 1 :(得分:0)

试试这个

           foreach(var player in X.Descendants("FantasyPlayer"))
            {
                var nflplayer = new NFLPlayer() {
                   ID = Convert.ToInt32(player.id),
                   FirstName = player.firstname,
                   Team = player.team
                });
                db.NFLPlayers.Add(nflplayer);
            }