1

我以前是否在使用Silverlight和RIA,我使用的是ADO.NET實體數據模型和域上下文。我正在教自己如何從RIA運行一個存儲過程,並且無法使它與之前的設置一起工作,因此我開始嘗試使用LINQ to SQL方法。我做了以下內容:Linq to SQL vs實體數據模型:獲取存儲過程運行

  • 新增的DBML
  • 拖動和放棄我的表和示例存儲過程
  • 保存的DBML和建成並重建解決方案和項目文件。
  • 創建一個域服務並嘗試添加dbml。

這裏是我的DBML alt text

這是我的錯誤。 可用的DataContext/ObjectContext類列表顯示爲空。我已經重建了很多次,甚至重新開始了視覺工作室。 alt text

因此,這裏是我的問題:

  1. 有沒有一種簡單的方法做ADO.Net我失蹤therfore我可以跳過添加LINQtoSQL類存儲過程。
  2. 我錯過了一些非常簡單的方法來添加dbml類並添加一個存儲過程。

CODE

ZipCodeDataClasses.dbml.layout

<?xml version="1.0" encoding="utf-8"?> 
<ordesignerObjectsDiagram dslVersion="1.0.0.0" absoluteBounds="0, 0, 11, 8.5" name="ZipCodeDataClasses"> 
    <DataContextMoniker Name="/ZipCodeDataClassesDataContext" /> 
    <nestedChildShapes> 
    <classShape Id="de7acfae-754b-4577-b227-3a33198fdc95" absoluteBounds="7.125, 2.375, 2, 1.3862939453125"> 
     <DataClassMoniker Name="/ZipCodeDataClassesDataContext/ZipCode" /> 
     <nestedChildShapes> 
     <elementListCompartment Id="8744ad5e-7b77-4770-911d-6dc963876e40" absoluteBounds="7.14, 2.835, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 
     </nestedChildShapes> 
    </classShape> 
    </nestedChildShapes> 
</ordesignerObjectsDiagram> 

ZipCodeDataClasses.designer.cs

#pragma warning disable 1591 
//------------------------------------------------------------------------------ 
// <auto-generated> 
//  This code was generated by a tool. 
//  Runtime Version:4.0.30319.1 
// 
//  Changes to this file may cause incorrect behavior and will be lost if 
//  the code is regenerated. 
// </auto-generated> 
//------------------------------------------------------------------------------ 

namespace StoredProcedureTest.Web 
{ 
using System.Data.Linq; 
using System.Data.Linq.Mapping; 
using System.Data; 
using System.Collections.Generic; 
using System.Reflection; 
using System.Linq; 
using System.Linq.Expressions; 
using System.ComponentModel; 
using System; 


[global::System.Data.Linq.Mapping.DatabaseAttribute(Name="ZIPCODES")] 
public partial class ZipCodeDataClassesDataContext : System.Data.Linq.DataContext 
{ 

    private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource(); 

    #region Extensibility Method Definitions 
    partial void OnCreated(); 
    #endregion 

    public ZipCodeDataClassesDataContext() : 
    base(global::System.Configuration.ConfigurationManager.ConnectionStrings["ZIPCODESConnectionString"].ConnectionString, mappingSource) 
    { 
    OnCreated(); 
    } 

    public ZipCodeDataClassesDataContext(string connection) : 
    base(connection, mappingSource) 
    { 
    OnCreated(); 
    } 

    public ZipCodeDataClassesDataContext(System.Data.IDbConnection connection) : 
    base(connection, mappingSource) 
    { 
    OnCreated(); 
    } 

    public ZipCodeDataClassesDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
    base(connection, mappingSource) 
    { 
    OnCreated(); 
    } 

    public ZipCodeDataClassesDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
    base(connection, mappingSource) 
    { 
    OnCreated(); 
    } 

    public System.Data.Linq.Table<ZipCode> ZipCodes 
    { 
    get 
    { 
    return this.GetTable<ZipCode>(); 
    } 
    } 

    [global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.sp_GetCityByZip")] 
    public int sp_GetCityByZip([global::System.Data.Linq.Mapping.ParameterAttribute(Name="ZIP", DbType="NVarChar(10)")] string zIP, [global::System.Data.Linq.Mapping.ParameterAttribute(Name="Return", DbType="NVarChar(26)")] ref string @return) 
    { 
    IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), zIP, @return); 
    @return = ((string)(result.GetParameterValue(1))); 
    return ((int)(result.ReturnValue)); 
    } 
} 

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.ZipCodes")] 
public partial class ZipCode 
{ 

    private string _City; 

    private string _State; 

    private int _Zip; 

    public ZipCode() 
    { 
    } 

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_City", DbType="VarChar(25)")] 
    public string City 
    { 
    get 
    { 
    return this._City; 
    } 
    set 
    { 
    if ((this._City != value)) 
    { 
    this._City = value; 
    } 
    } 
    } 

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_State", DbType="VarChar(2)")] 
    public string State 
    { 
    get 
    { 
    return this._State; 
    } 
    set 
    { 
    if ((this._State != value)) 
    { 
    this._State = value; 
    } 
    } 
    } 

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Zip", DbType="Int NOT NULL")] 
    public int Zip 
    { 
    get 
    { 
    return this._Zip; 
    } 
    set 
    { 
    if ((this._Zip != value)) 
    { 
    this._Zip = value; 
    } 
    } 
    } 
} 
} 
#pragma warning restore 1591 

回答

0

我放棄了試圖讓存儲過程與Silerlight工作,然而,遵循這個指南是最接近真實的實現。我希望它有幫助。

http://anhonga.wordpress.com/2010/02/17/using-stored-procedures-with-silverlight-4riapocos-part-ii/

如果你發現一個簡單的方法來獲取存儲實現的程序讓我知道,因爲我在LINQ改寫幾百程序的中間。

+0

感謝您的鏈接。證明有幫助。我發現了一段視頻,幫助我瞭解了一些更好的事情,希望它也能幫助你。 http://msdn.microsoft.com/en-us/vcsharp/dd565862.aspx – 2010-08-23 18:16:15

+0

謝謝你的鏈接。視頻看起來不錯,我將不得不嘗試實施,看看我能否實現它。 – Stryder 2010-08-23 23:15:34