-2
#region Properties
public int ID
{
    get;
    set;
}
public string Name
{
    get;
    set;
}
public string MetaTitle
{
    get;
    set;
}
public string MetaDescription
{
    get;
    set;
}
public virtual int WebsiteID
{
    get;
    set;    
}
public DateTime TimeStamp
{
    get;
    set;
}
#endregion Properties

#region Methods 
public void Insert()
{
    string sqlString = "INSERT INTO Pages ([name], [value], [meta_title], [meta_description], [website_id]) " +
        "VALUES (@Name, @Image, @Description, @MetaTitle, @MetaDescription, @WebsiteID);";
    SqlConnection sqlConnection =
        new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
    using (SqlCommand sqlCommand = new SqlCommand(sqlString, sqlConnection))
    {
        sqlCommand.Parameters.AddWithValue("@Name", this.Name);
        sqlCommand.Parameters.AddWithValue("@Image", this.Image);
        sqlCommand.Parameters.AddWithValue("@Description", this.Description);
        sqlCommand.Parameters.AddWithValue("@MetaTitle", this.MetaTitle);
        sqlCommand.Parameters.AddWithValue("@MetaDescription", this.MetaDescription);
        sqlCommand.Parameters.AddWithValue("@WebsiteID", this.WebsiteID);
        try
        {
            sqlConnection.Open();
            sqlCommand.ExecuteNonQuery();
            sqlConnection.Close();
            sqlConnection.Dispose();
        }
        catch (SqlException e)
        {
        }
    }
}

2 つの質問:

Section上記の Page というクラスから派生する別のクラスがあります。ただし、SectionWebsiteID はありませんが、代わりに PageID があります。どちらも整数ですが、派生クラスであるプロパティ名を変更するにはどうすればよいですか。

2 つ目は、別overrideInsert()方法を使用する必要があるsqlStringかどうかです。そうでない場合、そのような要件を実装する最善の方法は何ですか?

前もって感謝します。

4

2 に答える 2

0

上記の Page というクラスから派生する Section という別のクラスがあります。ただし、Section には WebsiteID はありませんが、代わりに PageID があります。どちらも整数ですが、派生クラスであるプロパティ名を変更するにはどうすればよいですか。

間違いは、ページにセクション オブジェクトが含まれているため、ページからセクションを派生させる必要がないことです。ページにはセクションのコレクションが必要です。

class Page
{
     private Section[] sections;
     public Section[] Sections {get;set;}
}
于 2012-08-19T00:46:33.347 に答える
0

あなたの遺産は少しずれていると思います。「セクション」は「ページ」ではありませんか?

Contentプロパティを持つ基本クラス、またはそのようなものを持たないのはなぜですか:

public int ID { get; set; }
public string Name { get; set; }
public string MetaTitle { get; set; }
public string MetaDescription { get; set; }
public DateTime TimeStamp { get; set; }

そしてPage、 を追加して拡張しWebsiteID、 セクションを追加してPageID.

しかし、エンティティ モデルをデータ アクセスから分離することもお勧めします。Entity Framework や NHibernate などを使用して永続性を処理すると、そのコードを手動で記述する必要がなくなります。

そうすれば、Section実際にPageエンティティを参照し、ID を手動で処理しない、より接続されたモデルを持つことができます。また、同じ方法で ( のように)Pageを含めることができ、よりクリーンなモデルが得られる可能性があります。SectionsList<Section>

于 2012-08-19T00:48:50.230 に答える