Как связать класс результатов в LINQ с 3 таблицами? - PullRequest
0 голосов
/ 15 ноября 2011

Вот моя ситуация: у меня есть 2 хранимые процедуры, которые я использовал для вызова своих данных:

  • Хиты
  • Uniques

Они оба возвращаютте же результаты, но из разных таблиц.Ситуация такова, что я использую метод с именем TargetRate(), и вместо того, чтобы поместить его в обе части класса, я хотел бы, чтобы тип результата был классом, в котором я мог бы использовать функцию TargetRate и другие функции для обеих функций без необходимости переписыватьфункция при внесении изменений.

Например,

  • HitsProcedure
  • UniquesProcedure
  • = Тип возвращаемого значения Stat

Iхотел бы использовать объект Stat для вывода моих результатов, а также использовать общие методы.Может кто-нибудь объяснить, как я это сделаю?

Спасибо

1 Ответ

1 голос
/ 16 ноября 2011

Вы ищете что-то вроде этого:

public abstract class Stats
{
    // put your fields here
    public bool Exists { get; set; }
    public int Count { get; set; }
    public Frob Foo { get; set; }

    public abstract void Fill();
}

public class UniquesProcedureStats : Stats
{
    public override void Fill()
    {
        // make call to call Uniques
        this.Exists = false;
        this.Count = 1
    }
}

public class HitsProcedureStats : Stats
{
    public override void Fill()
    {
        // make call to call HitsProcedure
        this.Exists = true;
        this.Foo = new Frob();
    }
}

Или, может быть, так:

public abstract class Stats
{
    // put your fields here
    public bool Exists { get; set; }
    public int Count { get; set; }
    public Frob Foo { get; set; }

    public abstract void Fill(string procedureName)
    {
        SqlConnection connection = new SqlConnection("Get your own connection string");
        connection.Open();
        SqlCommand command = new SqlCommand();
        command.Connection = connection;
        command.CommandText = procedureName; // your query may be more complicated than this?
        using (var reader = command.ExecuteReader())
        {
            reader.Read();
            this.Count = (int)reader["Count"];
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...