c # LINQ to Entities: извлечение пользовательских объектов - PullRequest
0 голосов
/ 06 января 2011

У меня есть простая модель сущности

Банк 1 --- ∞ Пользователь 1 --- ∞ Сессия

В частичном классе Bank я должен хранить объект Clock, установленный при создании Bank. Можно ли извлечь этот объект Clock из метода Session и, конечно, не передан параметр Bank?

Какой-то код

public partial class Bank : IBank { частный IClock _bankClock;

    public IClock Clock
    {
        get { return _bankClock; }
        set { _bankClock = value; }
    } 

}

public partial class Session : ISession public bool MyMethod() { var test = (dc.Session.Include("User.Bank").Where(t => t.session_id == session_id)); var temp = test.First().User.Bank.Clock.Now(); }

при вызове MyMethod я получаю ссылку на объект, не установленную для экземпляра объекта. и это относится к свойству Clock. Есть ли у вас какие-либо подсказки, чтобы получить пользовательский объект из запроса LINQ?

Спасибо, С наилучшими пожеланиями

больше кода // CreateBank


public IBank CreateBank(string bankName, int valuePassedInCreateMethod, Clock bankClock) {using (var dc = new Database1Entities(Functions.ToEntitiesConnectionString(connectionString))) { _dbField=valuePassedInCreateMethod; bankReturn=(from c in dc.Bank where c.bank_name == bankName select c).First(); bankReturn.Clock = bankClock; dc.SaveChanges(); return bankReturn;

            }

}

1 Ответ

1 голос
/ 06 января 2011

Проверить создание объекта _bankClock, вы присвоили ему какое-либо значение?

Посмотри, близок ли я к твоему требованию. Я получаю это работает

   static class Program
{
    [STAThread]
    static void Main()
    {
        User user = new User();
        user.Bank = Bank.CreateBank("my bank", 23, new Clock());
        Session session = new Session(user, "myid");
        bool returned = session.MyMethod();
        if (returned)
            MessageBox.Show("Got it");
    }

}

public class Bank
{

    int value;
    string bankName;
    public Clock Clock;

    public static Bank CreateBank(string bankName, int valuePassedInCreateMethod, Clock bankClock)
    {
        Bank b = new Bank();
        b.Clock = bankClock;
        b.bankName = bankName;
        b.value = valuePassedInCreateMethod;
        return b;
    }
}

public class User
{
    public Bank Bank;
    public string type = "User.Bank";
}

public partial class Session
{

    public static List<Session> Sessions;
    string type;
    string session_id;
    User User;

    public Session(User user, string session_id)
    {
        if (Sessions == null) Sessions = new List<Session>();
        this.User = user;
        this.type = user.type;
        this.session_id = session_id;
        Sessions.Add(this);
    }

    static void Add(Session session)
    {
        Sessions.Add(session);
    }
    static List<Session> Include(string type)
    {
        return Sessions.Where(rs => rs.type == type).ToList<Session>();
    }
    public bool MyMethod()
    {
        var test = Session.Include("User.Bank");
        var test1 = test.Where(t => t.session_id == session_id);
        var temp = test1.First();
        var temp1 = temp.User;
        var temp2 = temp1.Bank;
        var temp3 = temp2.Clock;
        var temp4 = temp3.Now();
        if (temp4 != DateTime.MinValue)
            return true;
        return false;
    }
}
public class Clock
{
    public DateTime Now()
    {
        return DateTime.Now;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...