-2

ここでは、wpf を使用しています。私のコードでは、datacontect という名前のフォルダーが 1 つあり、以下のコードが含まれています。

public interface IAccountCategoryDataSource
{
    bool Add(AccountCategory accountCategory);
    bool Update(AccountCategory accountCategory);
    bool Remove(AccountCategory accountCategory);

    AccountCategory GetById(int id);
    AccountCategory GetByName(string name);
    IEnumerable<AccountCategory> GetByParentCategory(AccountCategory category);
    IEnumerable<AccountCategory> GetTopLevelCategories();
    IEnumerable<AccountCategory> GetBySearchTerm(string searchTerm);
    IEnumerable<AccountCategory> GetAll();

    event EventHandler<ObjectAddedEventArgs> AccountCategoryAdded;
    event EventHandler<ObjectUpdatedEventArgs> AccountCategoryUpdated;
    event EventHandler<ObjectRemovedEventArgs> AccountCategoryRemoved;
}

他のフォルダーのデータソースもあります。ここでのデータソースは上記のファイルに関連しています

public class AccountCategoryDataSource : IAccountCategoryDataSource
{
    public int ReferenceCountOf(AccountCategory accountCategory)
    {
        int count = 0;

        string query = "select count(*) from account_categories where parent_category=" + accountCategory.Id
                     + " union select count(*) from accounts where category=" + accountCategory.Id;

        DataTable dataTable = SQLiteHelper.ExecuteQuery(query);
        foreach (DataRow row in dataTable.Rows)
        {
            count += Convert.ToInt32(row[0]);
        }

        return count;
    }

    #region IAccountCategoryDataSource Members

    public bool Add(AccountCategory accountCategory)
    {
        string query = "insert into account_categories(name, description, parent_category) values("
                            + "'" + accountCategory.Name + "', "
                            + "'" + accountCategory.Description + "', "
                            + accountCategory.ParentCategory.Id
                            + ")";
        accountCategory.Id = SQLiteHelper.ExecuteInsert(query);

        if (accountCategory.Id > 0)
        {
            if (AccountCategoryAdded != null)
            {
                AccountCategoryAdded(this, new ObjectAddedEventArgs(accountCategory));
            }

            return true;
        }

        return false;
    }

    public bool Update(AccountCategory accountCategory)..................

これは、モデル floder の accountcategory クラスに関連しています

public class AccountCategory : IDataErrorInfo, IValidable
{
    #region State Properties

    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public AccountCategory ParentCategory { get; set; }
    public bool Builtin { get; set; }

}

そして実行のために:ヘルパークラス

 public class SQLiteHelper
{
    public static DataTable ExecuteQuery(string query)
    {
        DataTable dataTable = new DataTable();

        SQLiteConnection conn = new SQLiteConnection(Settings.Default["DBConnectionString"].ToString());

        using (SQLiteCommand cmd = new SQLiteCommand(query, conn))
        {
            conn.Open();

            SQLiteDataReader reader = cmd.ExecuteReader();
            dataTable.Load(reader);
            reader.Close();

            conn.Close();
        }

        return dataTable;
    }..........................

データ コントラクトの簡単な役割と、それがヘルパー、モデル、および dataSouce とどのように相互作用するかを説明してください。linq to sql の概念を提供していますか?

4

1 に答える 1

0

DataContractは WCF の概念です。WPF とは無関係です (WCF と通信するまで)。

あなたのコードから、データアクセスレイヤークラスを含む単なるフォルダーのようで、WCFとは無関係のようです

于 2012-05-16T03:43:23.523 に答える