4

Я использую ASP.NET Entity Framework 4.1 MVC 3 (C#)Как я могу выполнить через мои объекты dbcontext в EF 4.1?

Я хочу использовать все объекты в моем DbContext. Мне нужно иметь возможность динамически ссылаться на мои объекты, чтобы создавать динамические представления.

Я прочитал книгу Лермана, две MVC (2 & 3) книги, msdn, asp.net и т. Д. Может быть, я просто что-то упустил?

Кажется, вам, возможно, придется использовать ObjectContext для доступа к объектам. Если это правильный путь, я не могу понять, как это сделать. Пожалуйста помоги. Спасибо.

ответ

0

Я не совсем уверен, что вы просите. Если вы хотите, чтобы динамически ссылаться на DbSets внутри DbContext вы могли бы использовать отражение:

DatabaseContext context = new DatabaseContext(); 
var contextObject = context as Object; 
var contextType = contextObject.GetType(); 
var properties = contextType.GetProperties(); 
String result = String.Empty; 
foreach (var property in properties) 
{ 
    result += property.Name + "\n" 
{ 

Но если честно, я не знаю, что вы спрашиваете, или то, что вы хотите. Я только что видел, что у вас еще нет ответов, поэтому я подумал, что дам свои два цента.

+0

Спасибо. Это приводит меня к именам как строки, но когда я делаю Html.DisplayFor(), он показывает кучу нерелевантных свойств (потому что они были выбраны как свойства, которые я предполагаю?) Было бы даже полезно, если бы кто-то мог просто показать мне как вручную добавить определенные объекты в коллекцию, чтобы я мог динамически их использовать в своих представлениях cshtml. Извините, я все еще новичок в программировании на C# и объекте. – Benjamin

+0

Вы должны опубликовать код, который у вас есть, я действительно не понимаю, что у вас есть, поэтому мне трудно сделать вывод, что вам нужно. – OpticalDelusion

+1

Я хотел бы сделать что-то вроде: '@foreach (лица в моем контексте) // адреса, номера телефонов, независимо { \t @RenderPartial (имя лица в виде строки для имени частичного зрения, сущность себя в качестве объектной модели для частичного вида) } ' Затем в частичном виде, возможно, это: ' @foreach (объект, который является собственностью навигации в этой модели/объекта) { \t Html.EditorFor (связанный с ней объект поддержки) } ' Кажется, это так просто. Но я полный новичок, поэтому, возможно, я не спрашиваю, что имеет смысл. Джулия Лерман рассказала об использовании ObjectStateManager в своей книге EF. Но я не знаю, как его использовать. – Benjamin

0

Составьте запрос с помощью Entity Sql и вызовите CreateQuery.

Посмотрите, с чего начать.

http://www.codeproject.com/Questions/208209/Problem-with-Entity-SQL?display=Print

 
ObjectQuery query = ctx.CreateQuery("SELECT P FROM WebStoreEntities.Customers AS P"); 

Im не 100% уверен, как получить имена сущностей - попробуйте OpticalDelusions путь - но это может помочь, как только вы их.

Вам придется динамически складывать все вместе, но в результате у вас может возникнуть проблема с кастом, но попробуйте.

+0

Привет, спасибо. Похоже, вы уже выбрали конкретный объект в опубликованном фрагменте.Я хотел бы иметь возможность прокручивать набор объектов и генерировать html.displayfor/editorfor помощников для каждого объекта в коллекции. – Benjamin

+0

Я упомянул выше, чтобы вы попытались использовать метод OpticalDelusions для получения имен сущностей в сочетании с этим методом для динамического запроса. Это может или не может работать для вас в конце из-за типа возвращаемого объекта ... поэтому я должен спросить ... почему вы пытаетесь сделать это таким образом, в отличие от, например, ... создание модели просмотра, содержащей каждый тип модели, который у вас есть в вашей базе данных? –

+0

Пока я этого не понимаю. Будет ли viewmodel решить это? Смогу ли я иметь вложенные частичные представления и сложную привязку модели? – Benjamin

3

вы также можете сделать это (например):

foreach (var dbItem in dbContext.Items) 
{ 
    //do what you want inside the loop with the dbItem 
    sList.Add(new SelectListItem() {Text = dbItem.ItemName, Value = dbItem.ItemTag}); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^