Implement a Save method for my object

后端 未结 3 842
时光取名叫无心
时光取名叫无心 2021-01-16 16:11

I\'m trying to improve my application\'s design, So instead of calling the DataAccess layer from the presentation layer. I\'ll try to implement a save method from my object

3条回答
  •  傲寒
    傲寒 (楼主)
    2021-01-16 16:56

    Passing the object itself to the data layer is usually a bit funky. Instead, I recommend that you have the object do the talking to the data layer, and let the data layer do its thing.

    internal static class DataLayer {
    
        public static bool Update(int id, string label) {
            // Update your data tier
            return success; // bool whether it succeeded or not
        }
    }
    
    internal class BusinessObject {
    
        public int ID {
            get;
            private set;
        } 
    
        public string Label {
            get;
            set;
        } 
    
        public bool Save() {
            return DataLayer.Update(this.ID, this.Label); // return data layer success
        }
    }
    

    The reason you would do it this way, is because your data layer may not have a reference to your business object, and thus would have no idea what it is. You would not be able to pass the object itself. This is a usual scenerio because generally it is your business object assembly that references your data layer assembly.

    If you have everything in the same assembly, than the above does not apply. Later on however, if you decide to refactor your data layer into its own module (which is often how it turns out, and is good design), passing the object will break because then it loses its reference to your business object.

    Either way you do it, you should know that you will have to update both your object and your data layer if you add a new field or member. That's just a given when you add something new.

    I may write a blog on some good design practices for this, but that is my recommendation.

提交回复
热议问题