实体框架在现有列表中添加新属性

时间:2016-09-02 01:19:49

标签: c# sql entity-framework

我正在使用此代码来查询数据库并将值插入模型中:

  UserContext user = new UserContext();

 List<MitarbeiterDataModel> mitarbeiter = new List<MitarbeiterDataModel>();
 var users = user.Users.Select(x => new MitarbeiterDataModel{ Id = x.Id, Vorname = x.Vorname, Nachname = x.Nachname, Studio = x.Studio }).ToList();
 mitarbeiter.AddRange(users);

现在我有一个员工列表,例如:

------------------------------
| Id | Name | Opportunities  |
------------------------------
| 1  | Tom  |                |
------------------------------
| 2  |John  |                |
------------------------------

我的目标是填写商机列。问题是这些值来自另一个表。所以我不得不以某种方式添加它们。有人能告诉我怎么做吗?

mitarbeiter.Where(x => x.Id == 1).Select(x => new MitarbeiterDataModel { Gelegenheiten = 2 });

'Gelegenheiten'意味着机会,并且存在于我的dataModel MitarbeiterDataModel中。 我用这种方式试了一下......虽然没有成功:(

2 个答案:

答案 0 :(得分:1)

就像Jeff Orris所说,你可以加入两个表,然后像这样创建你的viewModel:

UserContext context = new UserContext();

List<MitarbeiterDataModel> mitarbeiter = new List<MitarbeiterDataModel>();

var users = (
    from user in context.Users
    join opp in context.Opportunities on user.OppurtunityId equals opp.OppurtunityId
    select new MitarbeiterDataModel { 
        Id = user.Id, 
        Vorname = user.Vorname, 
        Nachname = user.Nachname, 
        Studio = user.Studio,
        Gelegenheiten = opp.SomeField
        })
    .ToList();

mitarbeiter.AddRange(users);

当然,我不知道你班级的内容,所以我编造了一些领域。

答案 1 :(得分:0)

对于Legacy数据,我认为你可以使用SQL游标来处理它,比如

声明@Opportunitiesint

声明updatetrigger游标 从Gelegenheiten选择机会,***

打开updatetrigger 从updatetrigger获取下一个到@Opportunities 而@@ fetch_status = 0
开始

update employees set Opportunities =@Opportunities where ***

从updatetrigger获取next到@Opportunities 结束
deallocate updatetrigger