我正在开始一个新项目,并决定尝试合并DDD模式,还包括Linq to Entities.当我查看EF的ObjectContext时,它似乎正在执行Repository和Unit of Work模式的功能:
存储库的意思是底层数据级接口是从实体表示中抽象出来的,我可以通过ObjectContext请求和保存数据.
工作单元在某种意义上说,我可以写入对objectContext的所有插入/更新,并在执行SaveChanges()时一次性执行它们.
将这些模式的另一层放在EF ObjectContext之上似乎是多余的?似乎Model类可以使用'partial class'直接合并到EF生成的实体之上.
我是DDD的新手,所以如果我在这里遗漏了什么,请告诉我.
我是redis的新手,所以我做错了,我敢肯定:
我在Azure Redis中存储了大约16,000个键/值.
我使用以下代码来写入键/值
foreach (var worksheet in wksList)
{
var wksYYMM = string.Format("{0}{1:00}", worksheet.ReviewDt.Year, worksheet.ReviewDt.Month);
var wksKey = string.Format("{0}:{1}:{2}", provCode, wksYYMM, worksheet.AcctNbr);
string jsonStr = JsonConvert.SerializeObject( MakeWsListDto(worksheet, provCoderList, rvrList));
cache.StringSet(wksKey, jsonStr);
}
Run Code Online (Sandbox Code Playgroud)
所以我的键看起来像这样:"AP:201401:AZ5798BK"
当我尝试查找时:
var keys = server.Keys(pattern: "AP:201401:*"); // returns in milliseconds
var keyAry = keys.ToArray(); // returns in over one minute
(note: this returns 12 keys)
Run Code Online (Sandbox Code Playgroud)
返回键需要1分12秒.一旦我有了密钥,它需要几毫秒来检索那些值.如果我迭代键的值并返回值,我得到类似的结果.我做了ToArray()只是为了隔离问题.
如果我在redis-cli.exe中尝试相同的查询,它会在几毫秒内回来.
我错误地使用此命令了吗?
我已经在这个问题上提出了许多死路一条.据推测,.NET 3.5 SP1在WCF合同中支持ADO.NET实体框架实体.但是,当我寻找有关它的可靠信息时,我没有得到很多答案.我在MSDN线程上找到了这个片段.有人对这个有经验么?[DataContract]发生了什么?这就是全部吗?为什么这么少的材料呢?
这是Tim Mallalieu在微软的回答.
默认情况下,实体框架中生成的实体类型是数据合同.如果我要在实体设计器中创建一个简单模型,如下所示:购物车实体类型默认为DataContract,其所有属性都注释为数据成员.然后我们可以在WCF服务中使用它,如下所示:
[ServiceContract]
public interface IService1
{
[OperationContract]
Cart[] AllCarts();
}
public class Service1 : IService1
{
public Cart[] AllCarts()
{
using (MSPetShop4Entities context = new MSPetShop4Entities())
{
var carts = from c in context.Carts select c;
return carts.ToArray();
}
}
}
Run Code Online (Sandbox Code Playgroud)
由于实体是DataContracts,您现在可以根据需要推送您的服务并通过网络发送这些服务.
我一直在使用奥斯陆作为MSchema.效果很好.我可以为数据库设计编写一个M Schema,并生成T-SQL以使用PK,FK构建整个数据库,检查完整性等.我已经设置了一个.bat文件来将.m编译成.mx然后加载它进入数据库,然后运行SqlMetal进入我的项目,并在30秒内继续我的更改.我喜欢它.
好的,现在我正在进入mGrammar.我不太确定如何将它合并到我的应用程序中,但我会弄明白的.我首先需要设置Intellipad给我输入/语法/输出三联画.我很难过.我无法想出用流程设置它的任何方法.是的,我可以接受song.mg项目并将其重命名,但这并没有让我对这个东西如何运作有任何见解.有任何想法吗?