Linq to sql Linq到SQL与实体数据模型:获取要运行的存储过程

Linq to sql Linq到SQL与实体数据模型:获取要运行的存储过程,linq-to-sql,ado.net,silverlight-4.0,c#-4.0,wcf-ria-services,Linq To Sql,Ado.net,Silverlight 4.0,C# 4.0,Wcf Ria Services,如果我之前在处理Silverlight和RIA,我使用的是ADO.NET实体数据模型和域上下文。我正在自学如何从RIA运行存储过程,但无法使其与以前的设置一起工作,因此我开始尝试使用该方法。我做了以下工作: 添加了DBML 拖放我的表和示例存储过程 保存DBML并生成和重新生成解决方案和项目文件。 创建域服务并尝试添加dbml。 这是我的DBML 这是我的错误。可用的DataContext/ObjectContext类列表显示为空。我已经重建了很多次,甚至重新启动了VisualStudio。

如果我之前在处理Silverlight和RIA,我使用的是ADO.NET实体数据模型和域上下文。我正在自学如何从RIA运行存储过程,但无法使其与以前的设置一起工作,因此我开始尝试使用该方法。我做了以下工作:

添加了DBML 拖放我的表和示例存储过程 保存DBML并生成和重新生成解决方案和项目文件。 创建域服务并尝试添加dbml。 这是我的DBML

这是我的错误。可用的DataContext/ObjectContext类列表显示为空。我已经重建了很多次,甚至重新启动了VisualStudio。

下面是我的问题:

有没有一种简单的方法可以使用ADO.Net来执行存储过程,而在我可以跳过添加LINQtoSQL类之前,我一直缺少这种方法。 我是否缺少一些非常简单的东西来添加dbml类并以这种方式添加存储过程。 代码

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

我放弃了让存储过程与Silerlight一起工作的尝试,但是遵循本指南是我最接近实际实现的一次。我希望有帮助


如果你找到了一个简单的方法来实现存储过程,请让我知道,因为我正在重写LINQ中的几百个程序。p> 谢谢你的链接。事实证明很有帮助。我找到了一个视频,它帮助我更好地理解了发生的事情,希望它也能帮助你。谢谢你的链接。视频看起来不错,我将不得不尝试实现,看看是否可以让它工作。