Ссылаться на любой атрибут с помощью Entity Framework

#c# #entity-framework #asp.net-mvc-4

#c# #entity-framework #asp.net-mvc-4

Вопрос:

Я пытаюсь установить все атрибуты в таблице сразу, используя Entity Framework, с DbSet, в ASP.NET MVC4. Репозиторий не знает всех атрибутов, но я уверен, что контроллер и представление передают все правильные атрибуты (разделение проблем хорошо). Как мне ссылаться на общий атрибут таблицы с помощью DbSet?

Вот пример:

MyRepository.cs:

 public class MyRepository {
    private EFMyContext context = new EFMyContext();

    public IQueryable<Entity> Tables { get { return context.Tables; } }

    public void SaveEntity(Entity entity) {
        Table savedRow = context.Tables.Find(entity.ID);
        foreach(attribute in Attribute attributes) { // how do I call these attributes?
            // update attributes
        }
    }
}
 

MyController.cs:

 public class MyController : Controller {
    private EFMyRepository repo;

    public ViewResult Save(Entity entity) {
        repo.SaveEntity(entity);
        return View();
    }
}
 

Комментарии:

1. Мне неясно, что вы подразумеваете под «атрибутами»? Вы пытаетесь обновить свойства объекта? И DbSet — это функция Entity Framework, а не LINQ-to-SQL.

2. @LeeD, я имею в виду атрибуты таблицы. Я не уверен, во что они переведены в DbSet.

3. Есть ли какой-нибудь способ сделать это без внешних инструментов?

4. Итак, я изменил Linq на Entity. Извините, я новичок в .NET.

Ответ №1:

Если вы хотите обновить все атрибуты, используя информацию, имеющуюся в вашем entity экземпляре, я бы рекомендовал вводить их с помощью http://valueinjecter.codeplex.com / .

Затем в вашем коде вы должны вызвать

 savedRow.InjectFrom(entity);
 

И он будет сопоставлять атрибуты с тем же именем и типом и обновлять их соответствующим образом.

Ответ №2:

Используйте AutoMapper, похожий на ValueInjecter, но некоторые говорят, что он лучше.