【问题标题】:.mdf and web client using REST.mdf 和使用 REST 的 Web 客户端
【发布时间】:2014-05-04 21:00:38
【问题描述】:

这可能是最业余的问题之一,但我们的最终项目要求我们通过 Web 服务(SOAP 或 REST)连接到 SQL Server 数据库 (.mdf),然后使用它,我得到了最难缠住我的头。所以我想我想确保我什至在做正确的事情,因为每次开始我都觉得自己做错了,必须重新开始:

  1. 我创建了一个新的库类,并通过一个新的 ADO 实体连接了.mdf,并允许 Visual Studio 生成这些类。

  2. 从那里我添加了

    using System.Runtime.Serialization;
    using System.Data.Linq.Mapping;
    

    和属性

    [Table(Name = "TABLENAME")]
    [DataContract]
    

    在每个属性之上。

在那之后我有点困惑。我需要库类中的连接字符串吗?本书关于 SOAP/REST 的章节没有包含数据库示例,而是手动编码表,所以我可能已经走错了方向。我的搜索中没有任何人以相同的方式接近它,因此我们将不胜感激。

【问题讨论】:

    标签: c# rest soap webclient mdf


    【解决方案1】:

    您的问题很难完全理解,因为您没有参考您正在阅读的书。将您的问题分成几块很有用。永远记住分开你的关注点——这对于想象你想要实现的目标非常有帮助。

    你引用的属性做了两个不同的事情。

    首先[Table]

    您正在使用 linq to sql 来查询您的数据库。我自己没有使用过这个,但[Table] 属性应该用在你的课堂上。该对象将代表数据库中的表。您的属性将代表表中的列,并应使用[Column] 属性进行修饰。如果可以推断出这些属性,则无需将名称添加到这些属性中。

    要了解有关此工具如何工作的更多信息,请查看 Microsoft website

    其次[DataContract]

    这是 .net 序列化的一部分,它告诉框架此类可以序列化为 XML(或 JSON,具体取决于您使用的工具)。同样,这个属性应该装饰你的类,你应该为你的属性使用[DataMember] 属性。阅读更多here

    这是一个简单的例子。如果您的表格看起来像:

    Table name Person:
    id int,
    firstname nvarchar(256),
    lastname nvarchar(256),
    

    你会有这样的课程:

    [Table]
    [DataContract]
    public class Person
    {
       [Column]
       [DataMember]
       public int Id { get; set;}
    
       [Column]  
       [DataMember]
       public string FirstName { get; set;}
    
       [Column]
       [DataMember]
       public string LastName { get; set;}
    }
    

    根据您到数据库的连接字符串。如果您在内部测试您的类库,那么您需要将您的连接字符串添加到App.config。如果您在 Web 服务项目中引用它,则需要将其放在 web.config 文件中,例如:

      <connectionStrings>
         <add name="Dbconnection" 
              connectionString="Server=localhost;       
                                Database=exapleDatabase; 
                                Integrated Security=True" ;
              providerName="System.Data.SqlClient" />
      </connectionStrings>
    

    我建议多阅读一些内容来打好基础。以上两者都只是工具。了解基本概念将使这些工具更易于使用。例如,一旦您了解了将由 LINQ to SQL 执行的 SQL,您就可以使用普通的 ADO.net 轻松编写自己的查询,甚至可以使用更现代的东西,如 Entity Framework。 Microsoft 将始终保护您免于繁重的工作,但这有时可能意味着您并不真正了解正在发生的事情,并且在我看来,从长远来看,这只会给您带来问题。

    【讨论】:

    • 谢谢你,这有助于揭开神秘面纱。这可能需要一个新帖子,但由于它自动生成代码,它将每个表放在一个部分类中,所以现在看起来我有多个合同。有没有办法在 Web.config 中添加多个合同,或者我需要将所有部分移动到一个完整的类中?
    • 您需要点击链接并阅读 Linq to Sql。您需要了解如何使用 DataContext 类来运行查询。 DataContext 是整个数据库的抽象,部分类代表表,这些类的属性代表列。理解抽象应该有助于您理解如何将它们拼凑在一起。
    猜你喜欢
    • 2016-02-19
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 2018-10-01
    • 2019-02-06
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多