小编Zac*_*ott的帖子

实体框架4:为所有实体创建单个图表是否有意义?

我写了一些关于实体框架的假设,然后是几个问题(所以请纠正我错在哪里).我正在尝试使用EF 4的POCO.

我的假设:

  • EF图表只能存在一个数据上下文.
  • 数据上下文可以引用多个实体.
  • 如果您有两个数据源,比如MS SQL服务器和Oracle,则EF需要两个不同的图来访问数据.
  • EF图数据上下文是"工作单元",对图中的任何内容都有一个Save().(当然你可以将它包装在UnitOfWork类中,但它基本上具有相同的职责).

假设这是正确的,这是我的问题:

  • 如果不将所有实体保留在同一个EF图表上,那么如何保持数据完整性,如果没有"客户","订单"就不能存在? 这仅仅是存储库的一个功能,只是为了验证完整性而加载数据,还是我们"尝试/捕获"数据库参照完整性错误?

  • 你不会为每个实体创建一个EF图吗? 例如,我不希望客户的更改和产品的更改一起写入,因为它们彼此无关(将它们放在同一图表上会导致它们一起写入).或者EF图的范围是否包含存储在同一存储介质中的所有类似实体?

将这样的实体分开是一种规范,还是只有一个图表来保存所有实体?我会想到后者,但我的想法越来越好.

poco ado.net-entity-data-model entity-framework-4

27
推荐指数
2
解决办法
9823
查看次数

ASP.NET MVC 3 Razor:如何在Javascript字符串变量中获取Action URL?

@(Html.ActionLink("Link Label", 
    "ActionMethodName", 
    "ControllerName", 
    null, // parameter object, then html object
    null))
Run Code Online (Sandbox Code Playgroud)

产生

<a href="/ControllerName/ActionMethodName/">Link Label</a>
Run Code Online (Sandbox Code Playgroud)

如果我想/ControllerName/ActionMethodName/id在JavaScript模板中引用EditNew链接,我将如何将其分配给JavaScript变量?

尝试:

<script type="text/javascript">
    var actionUrl = '@(Html.ActionLink("","ActionMethodName",
                                       "ControllerName",null,null))';
</script>
Run Code Online (Sandbox Code Playgroud)

但在那时,我将不得不使用Javascript删除<a href...字符串中不需要的字符.

javascript razor asp.net-mvc-3

25
推荐指数
2
解决办法
4万
查看次数

设计模式:生成器

我已经找到了一个很好Builder模式示例(在C#中),但找不到一个,因为我不了解Builder模式或者我正在尝试做一些从未打算过的事情.例如,如果我有一个抽象的汽车和抽象的构建方法来创建汽车零件,我应该能够将我所有的30个选择发送给Director,让它构建我需要的部件,然后构建我的汽车.无论生产哪种汽车,卡车,半卡车等,我都应该能够以完全相同的方式"驾驶"它.

第一个问题是大多数示例硬编码属性值到具体部分,我认为应该来自数据库.我认为这个想法是将我的选择发送给Director(来自数据源),并让构建器根据我的数据创建自定义产品.

第二个问题是我希望构建器方法实际创建部件然后将它们分配给产品,而不是传递字符串,而是真正的强类型产品部件.

例如,我想通过为我创建一个Builder制作表单字段来动态创建表单,包括标签,输入部分,验证等.这样我可以从我的ORM中读取对象,检查对象的元数据,将其传递给我的Builder并将新创建的用户控件结果添加到我的Web表单中.

但是,我找到的每个Builder示例都只有硬编码数据,而不是将选择从主代码传递到Builder并开始定制产品.一切似乎都是一个很大的静态案例陈述.例如,如果我有三个参数,每个参数有10个选项,我不想构建30个具体的Builder方法,我想创建的只是足以制作我的产品所需的属性,可能只有三个.

我很想让Director只存在于主代码中.应该有一种方法可以自动确定调用哪个具体的构建器方法,类似于多态和方法重载(尽管这是一个非常糟糕的例子),而不是在模式中使用case语句.(每次我需要添加新的产品类型时,我都需要修改现有的Director,这很糟糕).

c# design-patterns builder interface-builder

24
推荐指数
3
解决办法
2万
查看次数

如何在LINQ to Entities中执行SQL"Where Where"?

我真的想做这样的事情:

Select * 
from A join B on A.key = B.key join C on B.key = C.key -- propagated keys
where exists (select null from B where A.key = B.key and B.Name = "Joe") and
      exists (select null from C where B.key = C.key and C.Name = "Kim")
Run Code Online (Sandbox Code Playgroud)

使用Entity Framework 4和C#时,linq语句会是什么样子?

更新:

显然.Contains()将产生"Where Exists"结果.所以,另一次尝试
(我不知道这是否会编译LOL):

var inner1 = from recordB in B
             where recordB.Name = "Joe"
             select recordB.key;

var inner2 = from recordC in C
             where recordC.Name = "Kim"
             select …
Run Code Online (Sandbox Code Playgroud)

c# linq linq-to-entities

24
推荐指数
1
解决办法
3万
查看次数

实体框架4/Linq:如何在查询中将DateTime转换为字符串?

我有以下查询:

from a in Products
select new ProductVM
    {
         id = a.id,
         modified = a.modified.ToString()
    }
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:

LINQ to Entities does not recognize the method 'System.String ToString()'
method, and this method cannot be translated into a store expression.
Run Code Online (Sandbox Code Playgroud)

modified产品表的日期时间.将modified在ProductVM类是字符串.

有任何想法吗?这必须是一个微不足道的问题.

linq-to-entities tostring entity-framework-4

23
推荐指数
2
解决办法
2万
查看次数

在MVC 2中,您如何使用C#确定服务器上是否存在文件?

我知道你可以这样做:

if( System.IO.File.Exists(
    @"C:\INetPub\MVCWebsite\Content\Images\image.jpg") ) { ... }
Run Code Online (Sandbox Code Playgroud)

你可以这样做来引用MVC中的文件:

Url.Content("~/Content/Images/image.jpg")
Run Code Online (Sandbox Code Playgroud)

那么有没有办法相对检查"〜/ Content/Images/image.jpg"是否存在(在MVC中?)?

.net c# asp.net-mvc

19
推荐指数
1
解决办法
1万
查看次数

Linq to Entities(EF 4.1):如何使用中间的通配符('%term%term%')执行SQL LIKE?

我想搜索一下:

Post Cereal
Run Code Online (Sandbox Code Playgroud)

得到这个:

Post Honey Nut Cereal
Run Code Online (Sandbox Code Playgroud)

那里的外卡是空格.

我知道我可以为每个术语做一个SPLIT和一系列ANDs和Contains()并转换为Linq Expression作为规范对象,但是在发送给SQL的术语中是不是有办法表示通配符?我查看了Linq to SQL中的SQL函数,但我不确定它在Linq to Entities中是什么.

我想做这样的事情:

term = '%' + term.Replace(' ', '%') + '%';
db.table.where( p => System.Data.Objects.SqlClient.SqlFunctions
                     .SqlMethods.Like(p.fieldname, term) );
Run Code Online (Sandbox Code Playgroud)

有什么建议?

c# linq-to-entities sql-server-2005 entity-framework-4.1

18
推荐指数
2
解决办法
7905
查看次数

如何在Flash中常见的JavaScript HTML 5 Canvas图像"页面翻转"?

是否有人尝试使用JavaScript和HTML 5的canvas标签在Adobe Flash中常见的图像重新创建页面翻转效果?

是否有任何框架或JQuery插件可以实现这种效果?

Flash中的页面翻转允许您抓住模拟书页的一角并翻转页面,就像翻翻真实书页一样.

我真的想学习如何使用JavaScript和HTML 5的canvas标签,但不知道从哪里开始,也不知道需要什么公式.

示例页面在闪存中翻转

javascript html5 canvas

16
推荐指数
3
解决办法
8万
查看次数

AutoMapper:如何从String解析Int并可能根据数据类型创建规则?

我的表单有两个模型,一个是ViewModel,另一个是来自它的ControlModel.ControlModel具有所有相同的字段名称和层次结构,但所有字段都是字符串数据类型.

您如何编写AutoMapper将字符串字段转换为整数? 我尝试了Int32.Parse(myString)但是Int32在表达式中不可用(给出错误).

Mapper.CreateMap<SourceClass, DestinationClass>()
      .ForMember(dest => dest.myInteger, 
                  opt => opt.MapFrom(src => src.myString));
Run Code Online (Sandbox Code Playgroud)

类中的类型及其对应的转换类型:

string to int,int?,double,double?,DateTime和bool

另外,有没有办法以一种方式来推广映射,使用该函数解析目标中的所有整数?换句话说,有没有办法为数据类型创建映射?

编辑:

这很有希望:

AutoMapper.Mapper.CreateMap<string, int>()
          .ConvertUsing(src => Convert.ToInt32(src));
Run Code Online (Sandbox Code Playgroud)

编辑:这篇文章真的很有帮助

c# casting automapper

16
推荐指数
2
解决办法
1万
查看次数

ASP.NET Web API:如何在Web API控制器中读取服务器变量?

您将如何在ASP.NET Web API控制器中读取以下服务器变量?

HTTP_HOST
SERVER_NAME
REMOTE_HOST / REMOTE_ADDR
Run Code Online (Sandbox Code Playgroud)

我看到定义了System.Net.Http.HttpRequestMessage请求,但是我没有看到包含这些变量的集合.

我在一个带有多个主机头的IP上运行一个网站,我需要确定他们用来到那里的网站.

编辑:

结果是这样的:

((System.Web.HttpContextWrapper) Request.Properties["MS_HttpContext"])
    .Request.ServerVariables["HTTP_HOST"]
Run Code Online (Sandbox Code Playgroud)

asp.net-web-api

16
推荐指数
1
解决办法
2万
查看次数