#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, но некоторые говорят, что он лучше.