小编Tim*_*ess的帖子

ASP.NET MVC软件设计模式:DI,存储库,服务层

编辑

我应该将服务层和存储库层放入一个项目中,以便Web项目能够引用DbContext对象吗?现在我的web(控制器)无法引用dbcontext对象.什么是正确的方法?

// service and repository are together
(View <- Controller) -> (Service -> Repository -> EF DbContext) -> (DB) 
// separate service and repository layer
(View <- Controller) -> (Service) -> (Repository -> EF DbContext) -> (DB)
Run Code Online (Sandbox Code Playgroud)

以下是原始问题

我知道SO是一个很好的社区,可以发布关于mvc设计模式的问题.请给我你的建议,我将非常感谢你的帮助.谢谢!

我们正在计划一个新项目,我们的首要任务是开发一个可扩展且松散耦合的应用程序.

我是软件开发的新手; 我做了一些关于MVC音乐商店教程的阅读,然后是Steven Sanderson(Apress)的一本名为Pro ASP.NET MVC 3 Framework的书.从书中我学到了DDD(域驱动设计)和其他一些概念,如存储库和依赖注入.我按照这本书建立了SportsStore网站,并对DI有了一些基本的了解.但我个人认为这个例子没有将业务逻辑层分开,所以我对此进行了研究,我发现了一种称为服务层模式的模式,根据我的理解,它将业务逻辑层分开.基于此,我为我的新项目(下面的示例项目)提出了一个结构.

我需要实现IDisposable接口吗?如果是的话,在哪里和为什么?这种结构对于一个规模较大的项目是否可行?

样本数据库设计:产品(一)----(很多)ProductCategoryRs(很多)----(一)类

该解决方案包含3个项目:存储库,服务,Web

库:

定义IRepository接口,基本的CRUD操作

这些签名是否足够?我应该添加TEntity GetById(对象ID);

public interface IRepository<TEntity>
{
    IQueryable<TEntity> All { get; }
    void Create(TEntity item);
    void Update(TEntity …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc

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

如何使用 Dapper 将字符串插入到 oracle clob 类型中?

我有一个关于 Oracle 数据库 dapper 的简单问题,当我尝试将大尺寸字符串插入 Oracle Clob 时,它抛出异常:

Specified argument was out of the range of valid values.
Run Code Online (Sandbox Code Playgroud)

然后我试图修改这部分

param.Add(name: "body", value: obj.BODY, direction: ParameterDirection.Input);
Run Code Online (Sandbox Code Playgroud)

我无法指定OracleDbType.Clob

我应该改变什么才能让它发挥作用?

oracle dapper

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

C# Signed & Unsigned Integral to Big Endian Byte Array, and vice versa using Bitwise way with "best" performance

2nd edit:

I think my original test script has an issue, the 10000000 times loop is, in fact, dealing with the same memory location of an array, which makes the unsafe version (provided by Marc here) much faster than bitwise version. I wrote another test script, I noticed that bitwise and unsafe offers almost the same performance.

loop for 10,000,000 times

Bitwise: 4218484; UnsafeRaw: 4101719

0.0284673328426447545529081831 (~2% Difference)

here is the code:

unsafe class UnsafeRaw
{
    public static short …
Run Code Online (Sandbox Code Playgroud)

c# arrays performance endianness

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

多边形坐标已更改/已编辑/移动事件(Google Maps V3)

由于谷歌映射v3.11,可以将draggable属性设置为Polygon,CircleRectangle.例如,new google.maps.Polygon({ draggable: true }).

对于CircleRectangle,有类似事件radius_changed,center_changedbounds_changed为我们订阅当有任何变化.

但是Polygon,我们只能认购set_at,insert_atremove_at事件polygon.getPath().

因此,拖动多边形后会出现问题,多边形的位置已被更改/编辑/移动,但没有事件可以监听此更改.

google-maps google-maps-api-3

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

函数“gss_acquire_cred_impersonate_name”的隐式声明在 C99 中无效

我正在尝试学习 Node.js 版本 4.2.1,当我尝试将 mongoose 安装到项目中时,出现了如下警告消息,但是, github 上的此消息并未在 osx 上提供解决方案。apt-get install libkrb5-dev似乎不适用于 osx 环境。顺便说一句,我正在运行 os x El Capitan。如何解决这个问题呢?

> kerberos@0.0.15 install /Users/caoyang/WebstormProjects/Nodejs/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos
> (node-gyp rebuild) || (exit 0)

  CXX(target) Release/obj.target/kerberos/lib/kerberos.o
  CXX(target) Release/obj.target/kerberos/lib/worker.o
  CC(target) Release/obj.target/kerberos/lib/kerberosgss.o
../lib/kerberosgss.c:509:13: warning: implicit declaration of function
      'gss_acquire_cred_impersonate_name' is invalid in C99
      [-Wimplicit-function-declaration]
        maj_stat = gss_acquire_cred_impersonate_name(&min_stat,
                   ^
1 warning generated.
  CC(target) Release/obj.target/kerberos/lib/base64.o
  CXX(target) Release/obj.target/kerberos/lib/kerberos_context.o
  SOLINK_MODULE(target) Release/kerberos.node
Run Code Online (Sandbox Code Playgroud)

macos mongodb node.js

5
推荐指数
0
解决办法
458
查看次数

迭代还是递归来实现二叉搜索树?

我现在正在学习数据结构和算法。

我的讲义有一个使用递归方法实现的二叉搜索树的实现。这是一种优雅的方式,但我的问题是在现实生活中的代码中,我是否应该递归地实现二叉搜索树,如果树的高度/深度数很大,它是否会生成大量调用堆栈。

我知道递归是理解许多数据结构概念的关键概念,但是您会选择在现实生活中使用递归吗?

iteration recursion binary-tree

4
推荐指数
1
解决办法
3067
查看次数

使用JavaScript window.open()时启用IE最大按钮

当我window.open()在IE中使用JavaScript 时,始终禁用最大按钮.

如何启用按钮?我使用Chrome和Firefox没问题.

在此输入图像描述

javascript internet-explorer cross-browser

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

Morris.js条形图不能渲染悬停在文本上

我正在使用Morris.js条形图.由于某种原因,应该在HOVER OVER上出现的数字列在左下角.有人为什么?

莫里斯

morris.js

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

使用String.Join的IEnumerable扩展方法返回System.Collections.Generic.List`1 [System.String]

list.Join()回报我很惊讶System.Collections.Generic.List`1[System.String]

static void Main(string[] args)
{
    var list = new List<string>();

    list.Add("1024");
    list.Add("2048");

    Console.WriteLine(list.Join());

    Console.WriteLine(string.Join(", ", list));

    Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)

用扩展方法作为

public static class StringExtensions
{
    public static string Join(this IEnumerable list)
    {
        return string.Join(", ", list);
    }
}
Run Code Online (Sandbox Code Playgroud)

我不明白它不会返回我所期望的内容,我认为我非常熟悉string.join和扩展方法.


我在内心思考它会是这样的

static string Join(IEnumerable list)
{
    StringBuilder sb = new StringBuilder();

    foreach (var item in list)
    {
        sb.Append(item).Append(", ");
    }

    return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)

最后,我使用这个版本来支持通用和非通用版本.

public static string Join(this IEnumerable list)
{
    return Join(list.Cast<object>());
}

public …
Run Code Online (Sandbox Code Playgroud)

c# string ienumerable extension-methods

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

如何删除多边形坐标/顶点/节点(Google Maps V3)

如何使用多边形的insert_at,remove_at和set_at事件.

有人可以提供一些关于如何使用它们的示例以及什么是事件参数.

我现在要做的是当用户绘制多边形,并双击多边形的节点时,我希望从多边形中删除节点.

能做到吗?

events google-maps editing polygon

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

为什么String ==""在Java中返回false而在C#中不返回?

我有一个用Java和C#编写的简单递归方法

Java的

public static String reverse(String letter) {
    if (letter == "")
        return "";
    else
        return letter.substring(letter.length() - 1)
                + reverse(letter.substring(0, letter.length() - 1));
}
Run Code Online (Sandbox Code Playgroud)

C#

public static string reverse(string letter)
{
    if (letter == "")
        return "";
    else
        return letter[letter.Length - 1]
                + reverse(letter.Substring(0, letter.Length - 1));
}
Run Code Online (Sandbox Code Playgroud)

但是Java版本失败了letter == "",即使字母为空也会返回false.为什么C#版本在Java版本失败时有效?

c# java string

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

这个递归函数有什么作用?

这个功能有什么作用?你如何评价它?

如何追踪它?如何理解递归方法?

我只是无法理解递归,考试日期即将到来,我知道为了理解递归,我必须先了解递归.

但我只是不能写一个稍微复杂的递归方法,任何人都可以帮我使用最简单的英文单词.

public class BalancedStrings {

    public static void printBalanced(String prefix, int a, int b) {
        if (a > 0)
            printBalanced(prefix + "a", a - 1, b);
        if (b > 0)
            printBalanced(prefix + "b", a, b - 1);
        if (a == 0 && b == 0)
            System.out.println(prefix);
    }

    public static void printBalanced(int n) {
        if (n % 2 == 0) {
            printBalanced("", n / 2, n / 2);
        }
    }

    public static void main(String[] args) {
        printBalanced(4);
    } …
Run Code Online (Sandbox Code Playgroud)

java recursion

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

仅使用 css 的边框半径圆角

在此处输入图片说明

我可以只用 css 来实现吗?

50% 不适用于矩形

还有一件事:没有固定的高度。

css css-shapes

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