小编mag*_*tic的帖子

使用数据填充分层类结构

我有一个像这样的分层类结构:

类别 - >模板 - >实例

一个类别包含多个模板,一个模板包含多个实例.

如果我通过所有3个表的连接查询数据库中的数据,则数据如下所示:

CategoryID | CategoryName | CategoryType | TemplateID | TemplateName | TemplateXYZ | InstanceID | InstanceName  
1 | "CatA" | "TypeX" | 1 | "TempA" | "X" | 1 | "InstA" 
1 | "CatA" | "TypeX" | 1 | "TempA" | "X" | 2 | "InstB"
1 | "CatA" | "TypeX" | 1 | "TempA" | "X" | 3 | "InstC"
1 | "CatA" | "TypeX" | 1 | "TempB" | "Y" | …
Run Code Online (Sandbox Code Playgroud)

.net c# linq database hierarchical-data

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

在DAL中处理数据库连接的最佳方法 - 创建还是通过?

我希望我的数据访问层可以非常模块化地构建.
因此,我有数据检索方法,有时直接从业务层调用,有时由其他数据检索方法调用以创建对象依赖项.

在DAL中处理数据库连接的最佳方法是什么?

a)在每个方法中创建一个新连接,然后再处理它.
好:易于编写和使用.
坏:许多连接正在打开和关闭.(性能?)

b)将连接作为(可选)参数传递.
好:我可以为多个命令重用开放连接.
不好:我必须跟踪连接的所有权(谁必须关闭它?)并且不能使用非常简洁的"使用"语句.

c)还有别的吗?(单身连接可能?)

这是我第一次写一个真正的DAL,所以我真的可以从经验丰富的人那里得到一些帮助.

编辑:因为它似乎很重要,它是一个ASP.Net网站项目.

c# asp.net connection data-access-layer

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

ASP.NET:通过命名空间一次注册多个控件?

是否可以在aspx-File中注册一个完整的usercontrol名称空间,而不是单独的每个控件?

我创建了一堆usercontrols并将它们收集到一个自己的命名空间"MyWebControls"中,如下所示:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="LevelFilter.ascx.cs" Inherits="MyWebControls.LevelFilter" %>
Run Code Online (Sandbox Code Playgroud)

代码隐藏:

namespace MyWebControls
{
    public partial class LevelFilter : System.Web.UI.UserControl
    {
       ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我现在尝试将它们包含在我的页面中(以及什么不起作用):

<%@ Register Namespace="MyWebControls" TagPrefix="ucs" %>
...
<ucs:LevelFilter />
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?显然它适用于像AjaxControlToolkit这样的外部程序集,所以我想这应该是可能的.

我使用的是ASP.NET 4.0.

c# asp.net user-controls namespaces

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

从UdpClient收到的UDP包中获取客户端IP

我正在System.Net.Sockets.UdpClient类的帮助下开发一个动作多人游戏.

它适用于两个玩家,因此应该打开服务器并等待传入​​的连接.另一个玩家输入主机IP并尝试发送"ping",以确保连接是可能的并且有一个打开的服务器.然后主持人用"乒乓球"回应.

一旦游戏运行,两者都必须向对方发送udp消息,因此他们都需要对手的ip地址.

当然服务器也可以输入客户端IP,但这对我来说似乎是不必要的.

当收到"ping"消息时,如何从udp包中获取客户端IP?

这是我的接收代码(等待ping的服务器):

    private void ListenForPing()
    {
        while (!closeEverything)
        {
             var deserializer = new ASCIIEncoding();
             IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0);
             byte[] recData = udp.Receive(ref anyIP);
             string ping = deserializer.GetString(recData);
             if (ping == "ping")
             {
                 Console.WriteLine("Ping received.");
                 InvokePingReceiveEvent();
             }
        }
    }
Run Code Online (Sandbox Code Playgroud)

.net c# udp network-programming udpclient

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

MembershipUser和Entity Framework Code First

我正在使用EF Code First,现在在实现自定义MembershipProvider时遇到了麻烦.

对于EF Code First,我创建了自己的用户类,如下所示:

public class User
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    [Required]
    public string UserName { get; set; }
    [Required]
    public string Password { get; set; }
    [Required]
    public string Email { get; set; }
    [Required]
    public bool IsApproved { get; set; }
    public DateTime? LastLoginDate { get; set; }
    public DateTime? LastActivityDate { get; set; }
    [Required]
    public DateTime CreationDate { get; set; }
    [Required]
    public string ApplicationName { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net entity-framework asp.net-membership membership-provider

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

订购和过滤数据的设计模式是什么?

我需要在用户通过下拉列表选择的条件之后过滤和排序数据条目.可选择的将是"最新条目优先","最早条目优先","最低价格优先"等.

我可以为选项和switch/case创建一个enum来检索数据,但我宁愿以一种容易扩展的方式来做这件事.

什么设计模式最适合这种情况?

c# design-patterns

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

检查类型而不是null是一个合理的选择吗?

我的一个(高级)同事在他的代码中做了一些非常奇怪的事情.

他没有检查变量是否为null,而是检查类型.因为

null是FooType

实际上返回false,这是有效的.

public class Foo
{
    private string _bar = null;

    public string Bar
    {
        get
        {
            // strange way to check for null
            return (_bar is string) ? _bar : "";
        }
        set { _bar = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为这是糟糕的编码,Resharper似乎同意我的看法.有没有理由以这种方式写支票?

这是检查变量的有效方法吗?或者这可以被认为是不好的风格,甚至可能在某些特殊情况下有害?

除非我确定这实际上没有意义,否则我不想与他对抗.

.net c# null

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

使用异步管道来轮询 Observables?

场景:

我有一个每 2 秒轮询一次 URL 的服务:

export class FooDataService {

...

  public provideFooData() {
    const interval = Observable.interval(2000).startWith(0);
    return interval
      .switchMap(() => this.http.get(this.requestUrl))
      .map(fooData => fooData.json())
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我有一个组件要在其中显示轮询数据:

export class FooComponent implements OnInit {

  constructor(private fooDataService: FooDataService) {}

  public fooData$: Observable<FooData>;

  ngOnInit() {
    this.fooData$ = this.fooDataService.provideFooData();
  }
}
Run Code Online (Sandbox Code Playgroud)

在组件模板中,我将使用异步管道来检索值并将其传递给子组件:

<foo-data-viewer [data]="fooData$ | async"></foo-data-viewer>
Run Code Online (Sandbox Code Playgroud)

这种方法的问题是:

像这样实现它是无法用量角器进行测试的(请参阅我关于此主题本文的最后一个问题)。所有代码都在 ngZone 内执行,量角器将等待所有排队的操作完成后再继续。但Observable.interval()会对无限数量的操作进行排队,从而导致量角器超时。

常见的解决方案:

我最常读到的修复方法是runOutsideAngular这样使用:

export class FooComponent implements OnInit, OnDestroy {

  constructor(private ngZone: NgZone,
              private fooDataService: …
Run Code Online (Sandbox Code Playgroud)

rxjs typescript protractor angular

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

通过全局参数切换故事书背景

我有以下全局类型来启用故事书中的工具栏,让我选择主题:

export const globalTypes = {
  theme: {
    name: 'Theme',
    description: 'Global theme',
    defaultValue: MyTheme.Light,
    toolbar: {
      icon: 'mirror',
      items: [MyTheme.Light, MyTheme.Dark],
      showName: true,
      dynamicTitle: true,
    },
  },
};
Run Code Online (Sandbox Code Playgroud)

这工作正常,我可以通过工具栏切换主题:

主题切换器

现在我想根据主题设置故事的背景颜色(正文的背景颜色),但我不知道如何为全球所有故事执行此操作。

我知道如何配置不同的背景颜色,但我不知道如何根据context.globals. 这是如何运作的?

reactjs storybook

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

可以在Flags枚举中添加"All"项吗?

如果我有一个可以同时出现的多个值的枚举,我创建一个Flags枚举:

[Flags]
public enum Foo
{
    None = 0,
    A = 1,
    B = 2,
    C = 4,
    D = 8
}
Run Code Online (Sandbox Code Playgroud)

如果我现在想要传递每个值都设置的事实,我将不得不做这样的事情:

Bar bar = new Bar(Foo.A | Foo.B | Foo.C | Foo.D);
Run Code Online (Sandbox Code Playgroud)

添加额外元素All会被视为不良做法/有害/亵渎吗?

    All = 15
Run Code Online (Sandbox Code Playgroud)

当存在大量值并且将它们全部传递时,这将节省一些空间和时间是常见的情况.

据我所知,标志枚举(=位域)的机制,这应该工作.我不知道有任何副作用或其他原因你不应该这样做吗?

.net c# enums enum-flags

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