Как добавить еще один конструктор с параметром в классе linq (таблица) - PullRequest
1 голос
/ 06 мая 2009

Я использую LINQ to SQL в проекте ASP.NET. При вставке таблицы мне нужно преобразовать значения в конкретный объект таблицы, и мне нужно вставить.

Для этого я создал новый конструктор в этой таблице с параметром, чтобы я мог присвоить свое значение этому табличному объекту, назначение функциональности работает, но при вставке (obj.TS_Questions.InsertOnSubmit(mytableobject);) я получаю нулевое исключение.

мой код ::

default constructor for my table

public TS_Question()
        {
            this._TS_Options = new EntitySet<TS_Option>(new Action<TS_Option>(this.attach_TS_Options), new Action<TS_Option>(this.detach_TS_Options));
            this._TS_QuestGroups = new EntitySet<TS_QuestGroup>(new Action<TS_QuestGroup>(this.attach_TS_QuestGroups), new Action<TS_QuestGroup>(this.detach_TS_QuestGroups));
            this._TS_QuestRecords = new EntitySet<TS_QuestRecord>(new Action<TS_QuestRecord>(this.attach_TS_QuestRecords), new Action<TS_QuestRecord>(this.detach_TS_QuestRecords));
            this._TS_Admin = default(EntityRef<TS_Admin>);
            this._TS_LevelType = default(EntityRef<TS_LevelType>);
            this._TS_OptionTypeLT = default(EntityRef<TS_OptionTypeLT>);
            OnCreated();
        }

созданный мной конструктор

    public TS_Question(Guid Quest_QuestIDBL, string Quest_NameBL, Nullable<Guid> Quest_OptionTypeIDBL, Guid Quest_AdminIDBL, Guid Ques_LevelIDBL, int Quest_TimeBL, int Quest_MarkBL, string Qest_ExplanationBL, Nullable<bool> Qest_IsMultipleAnswerBL)
    {

        this._TS_Options = new EntitySet<TS_Option>(new Action<TS_Option>(this.attach_TS_Options), new Action<TS_Option>(this.detach_TS_Options));
        this._TS_QuestGroups = new EntitySet<TS_QuestGroup>(new Action<TS_QuestGroup>(this.attach_TS_QuestGroups), new Action<TS_QuestGroup>(this.detach_TS_QuestGroups));
        this._TS_QuestRecords = new EntitySet<TS_QuestRecord>(new Action<TS_QuestRecord>(this.attach_TS_QuestRecords), new Action<TS_QuestRecord>(this.detach_TS_QuestRecords));
        this._TS_Admin = default(EntityRef<TS_Admin>);
        this._TS_LevelType = default(EntityRef<TS_LevelType>);
        this._TS_OptionTypeLT = default(EntityRef<TS_OptionTypeLT>);
        OnCreated();

        this._Quest_QuestID = Quest_QuestIDBL;
        this._Quest_Name = Quest_NameBL; 
        if (Quest_OptionTypeIDBL != null)
        {
            this._Quest_OptionTypeID = Quest_OptionTypeIDBL;
        }
        this._Quest_AdminID = Quest_AdminIDBL;
        this._Ques_LevelID = Ques_LevelIDBL;
        this._Quest_Time = Quest_TimeBL;
        this._Quest_Mark = Quest_MarkBL;
        this._Qest_Explanation = Qest_ExplanationBL;
        this._Qest_IsMultipleAnswer = Qest_IsMultipleAnswerBL;

    }

Пожалуйста, помогите мне решить эту проблему

Ответы [ 2 ]

2 голосов
/ 06 мая 2009

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

 public partial class MyClass
{
    public MyClass(string fieldValue1,int fieldValue2)
        : this()
    {
        this.field1= fieldValue1;
        this.field2 = fieldValue2;
    }
}

Если это поможет, вы можете узнать больше об использовании конструкторов в C # здесь .

2 голосов
/ 06 мая 2009

Честно говоря, я не заглядывал слишком глубоко, но похоже, что OnCreated находится немного далеко на севере ... Возможно, вы захотите вызвать его после того, как закончите настройку своих переменных. Кроме этого, я бы сказал, убедитесь, что вы правильно инициализируете все в методе, вызывающем конструктор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...