我们需要从下表中生成以下域类模型。是否可以使用 Linq 2 SQL 来实现它。如果不可能,Entity Framework 会有帮助吗?你能解释一下怎么做吗?
注意:域类的代码在如何实现存储库 FindAll() 方法?. 那里也提供了映射示例。
注意:我试图避免 Linq 2 SQL 生成的实体和域类之间的映射。
编辑:“Linq to SQL,作为一种对象关系映射技术,仅支持按类层次结构表策略。这意味着继承层次结构中的所有级别都存储在同一个表中,并且鉴别器列告诉记录代表什么类。 "
CREATE TABLE [dbo].[BankAccount](
[BankAccountID] [int] NOT NULL,
[AccountType] [nchar](10) NOT NULL,
[OpenedDate] [datetime] NULL,
[Status] [nchar](10) NULL,
[AccountOwnerID] [int] NULL,
CONSTRAINT [PK_BankAccount] PRIMARY KEY CLUSTERED
(
[BankAccountID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
工厂如下
public class MySimpleBankAccountFactory : IBankAccountFactory
{
public DomainEntitiesForBank.IBankAccount CreateAccount(string accountType, int bankAccountID, string status, System.Nullable<System.DateTime> openedDate, System.Nullable<int> accountOwnerID)
{
DomainEntitiesForBank.IBankAccount acc = null;
if (System.String.Equals(accountType, "Fixed"))
{
acc = new DomainEntitiesForBank.FixedBankAccount();
acc.BankAccountID = bankAccountID;
acc.AccountStatus = status;
}
if (System.String.Equals(accountType, "Savings"))
{
acc = new DomainEntitiesForBank.SavingsBankAccount();
acc.BankAccountID = bankAccountID;
acc.AccountStatus = status;
}
return acc;
}
}
阅读
使用 POCO LINQ to SQL 实体 http://stephenwalther.com/archive/2008/07/22/asp-net-tip-23-use-poco-linq-to-sql-entities.aspx
使用 LINQ to SQL XML 映射文件 http://weblogs.asp.net/dwahlin/archive/2008/08/18/using-linq-to-sql-xml-mapping-files-step-by-step.aspx
如何:创建使用 POCO 定义的实体的域服务 http://msdn.microsoft.com/en-us/library/gg602754(v=vs.91).aspx