Silverlight實戰樣本4(兼集合屬性的妙用)–商務邏輯與服務層

來源:互聯網
上載者:User

1)商務邏輯層:DynamicDataBusi.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MEntities;
using System.Data.SqlClient;
namespace BBusiness
{
    public class DynamicDataBusi
    {
        public DynamicDataTable GetDynamicDataTable(string strSQL, string ConnStr)
        {
            SqlConnection theConn = new SqlConnection(ConnStr);
            DataTable theTable = new HDatabase.DynamicDataAccess().GetDataTable(strSQL, theConn);
            DynamicDataTable theDynamicTable = new DynamicDataTable();
            if (theTable != null)
            {
                foreach (DataColumn col in theTable.Columns)
                {
                    DynamicDataColumn theCol = new DynamicDataColumn();
                    theCol.Caption = col.Caption;
                    theCol.DataType = col.DataType.Name;
                    theCol.FieldName = col.ColumnName;
                    theCol.Length = col.MaxLength;
                    theCol.FormatString = "";
                    theDynamicTable.Columns.Add(theCol);
                }
                foreach (DataRow row in theTable.Rows)
                {
                    DynamicDataRow theRow = new DynamicDataRow();
                    for (int i = 0; i < theTable.Columns.Count; i++)
                    {
                        DynamicDataField theDataField = new DynamicDataField();
                        theDataField.FieldName = theTable.Columns[i].ColumnName;
                        theDataField.DataType = theTable.Columns[i].DataType.Name;
                        theDataField.Value = row[i];
                        theRow.DataFields.Add(theDataField);
                    }
                    theDynamicTable.Rows.Add(theRow);

                }
            }
            return theDynamicTable;
        }
    }
}
所有要提供給用戶端得實體的打包,以及服務端得實體緩衝之類的都可以封裝到這一層。商務邏輯層另外的最主要的功能就是商務邏輯的處理了,簡單的新增,修改,刪除和查詢都可在這裡封裝,有的雖然只是簡單的調用資料訪問層,但也不要讓服務層直接調用。因為在這一層可以增加很多功能,比如衝突檢測,邏輯檢查等。

2)RIA 服務層:DynamicDataService

namespace RIAServices.Web
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;
    using MEntities;
    using BBusiness;
    // TODO: 建立包含應用程式邏輯的方法。
    [EnableClientAccess()]
    public class DynamicDataService : DomainService
    {
        static string conn = "Data Source=127.0.0.1;Initial Catalog=DEVTEST;Persist Security Info=True;User ID=sa;Password=tian777888";
       
        [Invoke]
        public DynamicDataTable GetDynamicTable(string strSQL)
        {
            //在這裡檢查調用是否合法
            return new DynamicDataBusi().GetDynamicDataTable(strSQL, conn);
        }

    }
}

大家要注意,我的資料庫連接出現在這一層,純粹是巧合,資料庫連接應該放到資料訪問層或者設定檔裡,如果是比較複雜的應用,比如SaaS,還並需用單獨的類進行管理。

另外注意,這裡我沒有直接將服務層放在承載silverlight用戶端得webapp上,而是建立的RIA服務類庫。

到這裡,服務端的實現就完成了,編譯後,用戶端就可以看到我們的實體,並可調用服務方法。
後面,我們繼續建立用戶端的應用。

友情提示:以上代碼經過實測,絕對可以OK的。另外注意你們的WCF RIA Services 至少要到SP1,否則會有編譯錯誤.

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.