这可能是最业余的问题之一,但我们的最终项目要求我们通过Web服务(SOAP或REST)连接到SQL Server数据库(.mdf
),然后使用它,我就是最困难的时候缠着我的头。所以我想我想确保我做的也是正确的,因为每次我开始我都觉得我做错了,不得不重新开始:
我创建了一个新的库类,并通过一个新的ADO实体连接.mdf
,并允许Visual Studio生成类。
从那里我添加了
using System.Runtime.Serialization;
using System.Data.Linq.Mapping;
和属性
[Table(Name = "TABLENAME")]
[DataContract]
每个属性上方。
之后我有点困惑。我是否需要库类中的连接字符串?本书关于SOAP / REST的章节没有包含数据库示例,而是包含手动编码的表,因此我可能已经走错了方向。我的搜索没有任何人以同样的方式接近它,所以任何帮助都将受到赞赏。
答案 0 :(得分:0)
您的问题很难完全理解,因为您没有参考您正在阅读的书籍。将问题分解为块可能很有用。永远记得分开您的顾虑 - 这对于想象您想要实现的目标非常有帮助。
您引用的属性正在做两件事。
首先[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这样更现代的东西。微软将始终保护您免受困难,但有时可能意味着您并不真正了解正在发生的事情,而且我认为这样只会给您带来长期问题。