小编Jer*_*ose的帖子

如何将多行字符串拆分为tsql中的列

我有一个数据库字段,其中包含存储为多行字符串的地址信息.

88 Park View
Hemmingdale
London
Run Code Online (Sandbox Code Playgroud)

谁能告诉我将第1行,第2行和第3行作为select语句中的不同字段的最佳方法?

关心理查德

sql t-sql sql-server sql-server-2008

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

为所有已注册的类型注册相同的Unity拦截和调用处理程序

我有一个ICallHandler,我想在我的所有Unity容器实例中注册.

例如,采用以下处理程序:

public class ProfilerHandler : ICallHandler
{
    public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
    {
        //start timer
        IMethodReturn methodReturn = getNext()(input, getNext);
        //stop timer
    }

    public int Order
    {
        get; set;
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是IoC容器构造函数:

public class IoCContainer : UnityContainer
{
    public IoCContainer()
    {
        this.RegisterType<IUserService, UserService>(new ContainerControlledLifetimeManager());
        this.RegisterType<IRepository<User>, UserRepository>(new ContainerControlledLifetimeManager());
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要做的就是使用所有这些类型注册此处理程序.

我可以用一些非常详细的代码来做这件事:

public class IoCContainer : UnityContainer
{
    public IoCContainer()
    {
        this.AddNewExtension<Interception>();

        this.RegisterType<IUserService, UserService>(new ContainerControlledLifetimeManager()).Configure<Interception>().SetInterceptorFor<IUserService>(new InterfaceInterceptor());
        this.RegisterType<IRepository<User>, UserRepository>(new ContainerControlledLifetimeManager()).Configure<Interception>().SetInterceptorFor<IRepository<User>>(new InterfaceInterceptor());
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我不仅要在我的所有类型注册上编写相同的拦截代码(想象一下,如果我有100多个类型注册),但我也必须HandlerAttribute在每个接口上包含一个(再次,如果我有100多个接口,那就不好了)适用于此).

这是我唯一的选择,还是有办法在容器级别执行此操作以避免必须将其应用于每个单独的类型注册和界面?

c# aop inversion-of-control unity-container

7
推荐指数
1
解决办法
3473
查看次数

关于模型验证,EF4代码优先与模型优先

我正在开发一个单人ASP.NET MVC 3项目(我完全控制数据库模式和代码),我正在尝试在数据库优先和POCO w /我的EF4模型之间做出决定,或者如果我应该是代码优先的.

我想要实现的主要功能是使用DataAnnotation属性来装饰我的模型,这样我就可以在执行任何持久性之前强制执行模式验证.看看Scott Guthrie关于模型验证w/MVC 2的文章,他谈到了关于使用代码优先(步骤2)进行操作的文章,并使用"伙伴类"进行模型优先(或数据库优先)(第5步) ).

我历史上使用SQL Server设计器GUI(和脚本)完成了我的数据库设计,因此我非常高效,严格来说,在数据库设计方面.但是,除非我放弃使用DataAnnotation属性进行装饰验证的想法,否则我将违反DRY,不仅要在两个类中具有模型属性,而且必须在两个地方构建我的模式.

我正在寻找那些对这两种方法都有经验的人(甚至是一种方法),并且可以提供他们去哪种方式的反馈,为什么他们决定这种方式,以及他们如何发现它的工作方式.我还想知道我是否会更好地完全不同,使用像Fluent验证这样的工具,或者甚至完全放弃域模型级验证,并在服务和视图模型中保持我的验证.

asp.net-mvc entity-framework code-first entity-framework-4 data-annotations

6
推荐指数
1
解决办法
2198
查看次数

我是否应该担心ORM默认返回所有列?

由于我在使用ORM(迄今为止LLBL Gen Pro和Entity Framework 4)方面的经验有限,我注意到本质上,查询返回所有列的数据.我知道NHibernate是另一个流行的ORM,我不确定这适用于它,但我认为它确实如此.

当然,我知道有解决方法:

  • 创建SQL视图并在视图上创建模型和映射
  • 使用存储过程并在返回的结果集上创建模型和映射

我知道坚持某些做法可以帮助减轻这种情况:

  • 选择数据时,确保您的行数受到合理限制
  • 确保表格不会过宽(大量列和/或大数据类型)

所以这是我的问题:

  1. 上述做法是否足够,或者我是否仍应考虑寻找限制返回列数的方法?

  2. 除了上面列出的列之外,还有其他方法来限制返回的列吗?

  3. 您通常如何在项目中处理此问题?

提前致谢.

更新:这种情况源于SELECT *被认为是一种不良做法的概念.见这个讨论.

nhibernate orm entity-framework llblgenpro entity-framework-4

6
推荐指数
1
解决办法
598
查看次数

帮助MVC验证/授权解决方案

我正在构建一个MVC 3应用程序,需要找到一个管理身份验证和授权的好解决方案.我使用过Membership,在这种情况下我不想使用它 - 我更喜欢使用自己的设计和表格.但是,如果合适的话,我愿意使用内置接口实现我的自定义逻辑.

这是我的要求:

  • 用户可以是一个或多个角色的一部分.

  • 角色可以映射到任意数量的"权限"(多对多).权限类似于"可以编辑其他用户的帖子".

  • 每个控制器动作可以允许访问一个或多个角色(或者对于公共页面可以不需要授权).

  • 我还需要"功能级别"控制哪些角色可以查看/更新视图上的各种元素.可以使用权限来驱动这些角色.

  • 作为旁注,我可能还允许会员使用他们的Facebook和/或Twitter帐户进行注册.但这可以独立于我的自定义成员身份实现,如果这是合适的(即在注册时创建自定义用户,然后将其绑定到FB/Twitter帐户).

我确定之前有人做过这样的事情.但基于我在这个主题上看到的十几个博客和SO帖子,没有一个解决方案真的适合这个,它似乎并不存在.但是我很有可能无法将各个部分组合在一起,并且适当的东西正在盯着我.

例如,我已经阅读了一些关于"基于声明"的身份验证与"基于角色"的身份验证,但不确定我是否了解足够的差异来进行呼叫,也不确定天气是否需要ASP.NET成员身份.我还读到了通过实现IPrincipal和IIdentity以及使用动作过滤器来驱动控制器访问来构建自定义成员资格,但我没有找到任何全面的指南来实现这一点,而且我仍然相当绿色的动作过滤器.

我也不确定是否应该使用一些.NET的内置控件进行注册,身份验证,忘记密码等等.我的本能不是,因为我通常喜欢自己构建这些,我也不确定如果他们可以在自定义设置中工作.但如果我错了,请告诉我.

提前致谢.

authentication asp.net-mvc asp.net-mvc-3

6
推荐指数
1
解决办法
779
查看次数

观点中的条件陈述是坏消息吗?

我需要快速的健全检查.我正在尝试设计我的观点,使它们干净,简洁,并且尽可能没有任何条件逻辑.但是,我很难摆脱所有条件陈述.我想知道在视图中是否有一些条件语句是不可避免的?

例如:

@if (Model.UserCanEdit)
{
    <button type="button" id="Edit">Edit</button>
}
Run Code Online (Sandbox Code Playgroud)

如果您的视图具有可根据不同条件更改或显示/隐藏的多个元素,则选项不多.

那么我应该遵循哪些指导方针,在视图中允许条件逻辑的哪一行?在我的观点中有哪些减少条件逻辑的方法,我可能没想到?

提前致谢.

asp.net-mvc razor asp.net-mvc-3 asp.net-mvc-2

6
推荐指数
1
解决办法
1482
查看次数

从ModelMetaData获取另一个属性的值

我试图从GetClientValidationRules自定义验证属性的方法中获取另一个属性的值.

这是我的尝试(基于达林对另一个问题的回答):

public IEnumerable<ModelClientValidationRule> GetClientValidationRules(
    ModelMetadata metadata, ControllerContext context)
{
    var parentType = metadata.ContainerType;
    var parentMetaData = ModelMetadataProviders.Current
        .GetMetadataForType(null, parentType);

    var parentMetaData = ModelMetadataProviders.Current
        .GetMetadataForProperties(context.Controller.ViewData.Model, parentType); 

    var otherProperty = parentMetaData.FirstOrDefault(p => 
        p.PropertyName == "SomeProperty");

    var otherValue = otherProperty.Model;

    var rule = new ModelClientValidationRule
    {
        ValidationType = "customvalidatorattribute",
        ErrorMessage = this.FormatErrorMessage(metadata.GetDisplayName()),
    };

    yield return rule;
}
Run Code Online (Sandbox Code Playgroud)

但是,在尝试设置时otherValue,我得到:

System.Reflection.TargetException:Object与目标类型不匹配.

asp.net-mvc asp.net-mvc-3

6
推荐指数
1
解决办法
5814
查看次数

为服务层设计DI(构造函数注入)的存储库

我正在构建一个MVC3应用程序,尝试使用IoC和构造函数注入.我的数据库(到目前为止)大约有50个表.我正在使用EF4(带有POCO T4模板)作为我的DAC代码.我正在使用存储库模式,每个表都有自己的存储库.我的服务层中的服务类是使用这些存储库注入的.

问题:我的服务类正在增加他们需要的存储库数量.在某些情况下,我正在接近10个存储库,它开始闻起来.

是否有一种设计存储库和服务类的通用方法,使得服务不需要这么多的存储库?

这是我的想法,我只是不确定哪一个是对的:

1)这是一个标志,我应该考虑将我的存储库组合/分组到表的相关部分,减少每个服务类的数量或依赖存储库.但是,这种方法的问题在于它会使我的存储库膨胀并使其复杂化,并使我无法使用所有存储库的通用接口(数据检索/更新的标准方法).

2)这是我应该考虑根据我的存储库(表)将我的服务分成组的标志.问题在于我的一些服务方法共享通用实现,并且跨类打破这些可能会使我的依赖项复杂化.

3)这表明我不知道自己在做什么,并且有一些我根本无法看到的根本错误.

更新:有关我如何实现EF4和存储库的想法,请在codeplex上查看此示例应用程序(我使用的是版本1).然而,看一下(和这里)的一些评论,看起来我需要做更多的阅读以确保这是我想要的路线 - 听起来可能不是.

asp.net-mvc entity-framework dependency-injection repository inversion-of-control

6
推荐指数
2
解决办法
1191
查看次数

使用Fluent验证进行不显眼的自定义/条件验证

我正在寻找一种方法来为Fluent验证实现不显眼的自定义验证.根据文档,它似乎并不表示它支持不显眼的验证.

同样适用于使用条件验证(When/unless).我在他们的MVC文档中看到,条件和其他复杂验证不支持不显眼的验证:

请注意,FluentValidation也适用于ASP.NET MVC的客户端验证,但并非所有规则都受支持.例如,使用条件(使用When/unless),自定义验证程序或对Must的调用定义的任何规则都不会在客户端运行.客户端支持以下验证器:

*NotNull/NotEmpty
*匹配(正则表达式)
*InclusiveBetween(范围)
*CreditCard
*电子邮件
*EqualTo(跨属性相等比较)
*长度

那么有没有人想出如何让这个工作?如果没有,是否有其他验证选项可以为不引人注目的自定义/复杂验证提供更好的支持?

asp.net-mvc fluentvalidation unobtrusive-validation asp.net-mvc-3

6
推荐指数
1
解决办法
2894
查看次数

格式化逻辑在哪里属于MVC?

假设我的电话号码以10位数字符串的形式存储在数据库中:

0000000000

我想在将此电话号码呈现给用户时将其格式化为:

(000)000-0000

我在实用程序程序集中有一个扩展方法来处理这种格式:

static string ToPhoneNumber(this string value)
{
    return Regex.Replace(value, @"(\d{3})(\d{3})(\d{4})", "($1) $2-$3");
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,我在什么时候应用这种转换?

1)在视图中:

@Model.PhoneNumber.ToPhoneNumber()
Run Code Online (Sandbox Code Playgroud)

2)在视图模型中:

public string FormattedPhoneNumber
{
    get
    {
        return this.PhoneNumber.ToPhoneNumber()
    }
}
Run Code Online (Sandbox Code Playgroud)

3)在控制器中:

userModel.FormattedPhoneNumber = userModel.PhoneNumber.ToPhoneNumber()
Run Code Online (Sandbox Code Playgroud)

4)在域模型中(与#2相同的实现)

5)在服务中(与#3相同的实现)

此外,答案取决于它是否是全局格式需求(如电话号码)与单个视图上的隔离一次性格式化?

我会给出我的想法,但不想影响任何答案.

c# language-agnostic asp.net-mvc asp.net-mvc-3

6
推荐指数
2
解决办法
2004
查看次数