如果我想创建多个CRUD方法的重载,我该怎么办?

Any*_*are 12 c# asp.net ado.net

如果我有一个类,以某种方式表示我的数据库中的特定表的映射..此类包含约30个属性.

我创造了CRUD Methods.

并发现自己需要另一个(UPDATE)方法,它应该只更新两个字段.


我应该用一个简单的例子以良好的方式做什么?

  1. 使用我现有的方法,填充整个对象并更新所有字段,包括我想要的两个字段?(无用的工作)
  2. 用另一个名字创建静态方法(但我想保留我的方法名称,因为它具有表现力)!!并且需要两个参数?

Gua*_*nxi 3

我将通过创建两个单独的接口并为每个接口创建重载函数。我会根据使用情况对属性进行分组,就像我希望状态在与其他常见属性分开的某个时间进行更新。

public interface ICommonProperties
{
   public string P1{get; set;}
   public string P2{get; set;}
   public string P3{ get; set; }
}
public interface ITrackable
{
   public string Status{get; set;}
}
public class FinalClass : ICommonProperties, ITrackable
{
   public string P1{get; set;}
   public string P2{get; set;}
   public string P3{get; set;}
   public string Status{get; set;}
}

public class FinalClassOperations
{
   public void Update(FinalClass finalClassInstance) { }; //Updates everything
   public void Update(ICommonProperties finalClassInstance) { }; //Updates only ICommonProperties
   public void Update(ITrackable finalClassInstance) { }; //updates only Status.
}
Run Code Online (Sandbox Code Playgroud)

此外,如果您愿意,您可以创建一个单独的类来仅更新状态,并且仍然适合:

public class Tracker : ITrackable{
    public string Status{get; set;}
}
Run Code Online (Sandbox Code Playgroud)

但是,是的,如果这两个属性不能在逻辑上分开,我就不会这样做并将它们放在一起。