Welcome

首页 / 软件开发 / LINQ / 使用LINQS 0.0.6描述数据库模型和创建数据库

使用LINQS 0.0.6描述数据库模型和创建数据库2011-09-16 博客园 a_a大家好,a_a写文档的经验有限,不过从今天开始我会尝试将刚刚发布的LINQS 0.0.6通过文档介绍给 大家。

其实使用LINQS应该是件非常简单惬意的事情,今天我们先来看看其中最简单的描述数据库模型并通过 它来创建物理数据库。

在开始前,也许您会愿意通过发布文档了解一下“什么是LINQS 0.0.6”,以及使用LINQS 0.0.6的基 本需求。

一、描述一个简单的名片数据库模型:

首先添加对Katmai项目和Xbb.Data.SqlServerModel.Katmai命名空间的引用,这个命名空间提供SQL Server 2008业务对象的描述服务。

var profession = new Table
{
Name = "Profession",
Columns = new IColumn[] {
new Column { Name = "Name", Type = new NVarChar(50) } }
};
var r = new Database
{
Name = "NameCards",
Tables = new Table[] {
new Table { Name = "Person", Columns = new IColumn[] {
new Column { Name = "Name", Type = new NVarChar(50) },
new Column { Name = "Age", Type = new Int() },
new AssociationColumn { Name = "ProfessionID", Table = profession } } },
profession }
};

这段代码描述了名片数据库中的专业(类型)和人物两个表以及我们关心的一些列,下面这段代码帮 我们创建“ID”、“RowGuid”和最后修改时间等系统列:

foreach (var t in r.Tables)
{
if (t.PrimaryKey == null)
{
var id = new IdentityColumn(t.Name + "ID");
t.Columns = new Column[] { id }.Concat(t.Columns);
t.IdentityColumn = id;
t.PrimaryKey = new IColumn[] { id };
t.Keys = new IEnumerable<IColumn>[] { t.PrimaryKey };
}
var rowGuid = new RowGuidColumn { };
var modifiedDate = new ModifiedDateColumn { };
t.RowGuidColumn = rowGuid;
t.Columns = t.Columns.Concat(new Column[] { rowGuid, modifiedDate });
}

至此一份数据库模型描述就完成了,大家可以在源代码中的 “_KatmaiKatmaiKatmaiDescriptorSample.cs”中找到类似的描述以及更多的作为案例的数据库描述 。

在上面这段代码中我们看到的Table的IdentityColumn、PrimaryKey、Keys等属性是根据在Database Diagram设计视图(SQL Server Management Studio和Visual Studio Team Suite中集成)中的对象结构 映射的,这比SQL脚本语言中的结构更加细致完整。