Ссылка на новую модель в C # вроде Ruby

1

Недавно я перешел с Ruby on Rails на C# используя .NET.

В Ruby вы можете связать новую модель с использованием new CurrentUser.newmodel до тех пор, как newmodel имеет UserId и эта модель будет связана с этим пользователем. Также вы можете подтянуть эту модель с помощью CurrentUser.newmodel и запросить любые атрибуты из той модели, которую вы хотите. Для этого вам нужны отношения один к одному с ActiveRecord. Например, в Ruby вы использовали бы

class newmodel

  belongs_to :currentuser

  //other code here that doesn't matter within this question
end

Есть ли способ заставить мои модели сделать что-то подобное с Entity?

  • 0
    LINQ - это язык запросов ко всему, а не ORM. Вы должны сравнивать Rails с NHibernate, Entity Framework или другими ORM.
  • 0
    Ах, я прошу прощения, я имел в виду сущность. Я отредактирую это. Спасибо
Показать ещё 1 комментарий
Теги:
entity-framework

2 ответа

0

Я все еще не могу комментировать, но Panagiotis кажется правильным - вы, вероятно, задаете неправильный вопрос. Во-первых, я стараюсь, чтобы вы назначили конкретный профиль пользователя для приложения. если это так - см. http://www.codeproject.com/Articles/281602/ASP-NET-Profile-Provider и http://msdn.microsoft.com/en-us/library/0580x1f5%28v=vs.100 % 29.aspx

Но если вы ищете постоянство отношений (например, один-к-одному, один-ко-многим и т.д.), Вы должны быть более конкретными в отношении уровня данных, который вы используете.

РЕДАКТИРОВАТЬ:

В отличие от динамических языков, таких как Ruby и Python, С# очень "строгий" с точки зрения моделирования объектов, поэтому, если вы хотите использовать синтаксис, например User.Whatever, то, Whatever должно быть объявлено классом. Единственный способ реализовать гибкие атрибуты объекта - использовать какой-то словарь или список.

Пример внедрения может быть:

public class User{
    public User(){
      AdditionalAttributes=new Dictionary<string, object>();
    }
    public Dictionary<string, object> AdditionalAttributes{get; set;}
}

а потом

var user=new User();
user["belongs_to"]=currentUser

но это может быть сложным для хранения такого отношения.

  • 0
    Ты прав. Я отредактировал его, но, по сути, да, это был бы один в один, где вам бы пришлось обычно использовать принадлежать_ в Rails. Я просто не уверен, как конвертировать это в C #
  • 0
    пожалуйста, посмотрите мои изменения
0

Да, если вы определили свои модели в Entity Framework, вы можете сопоставить объекты в отношениях, как в Rails. Синтаксис почти одинаковый, для фактической части назначения:

Person bob = new Person();
Job j = new Job();
bob.Job = j;

При сохранении идентификатор j будет сохранен в таблице Person, чтобы сохранить связь.

  • 0
    Это не то же самое. В Ruby вам не нужно создавать классы, они создаются языком динамически. В EF вам нужно создавать классы со всеми атрибутами, к которым вы хотите получить доступ. AFAIK только провайдеры типа F # предоставляют такую функциональность
  • 0
    Да, это правда. Я не говорил о том, как создаются классы, просто о том, как происходит назначение (как я уже сказал). Мне показалось, что его вопрос был о том, как происходит постоянство, поэтому я пытался ответить на него.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню