【发布时间】:2014-11-13 14:23:31
【问题描述】:
首先使用实体框架数据库时如何使我的构造函数受到保护?
当我从我的数据库生成实体数据模型时,自动生成的类包含一个公共构造函数,
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Domain.Models
{
using System;
using System.Collections.Generic;
public partial class MyClass
{
public MyClass()
{
我想要的是一个受保护的构造函数
public partial class MyClass
{
protected MyClass()
{
【问题讨论】:
-
我最初的反应是,我认为数据库优先是不可能的,因为任何刷新模型都会导致您的手动更改被覆盖。
-
您为什么要这样做?这样就不可能创建此类的实例。您是否试图阻止用户实例化基类?然后检查是否可以在设计器中将基类标记为抽象
-
@PanagiotisKanavos 我正在创建一个需要特定签名的部分类,以便我可以确保我的模型状态有效,例如 MyClass(person person) {this.Person = person}。在这里查看更多解释udidahan.com/2009/06/29/dont-create-aggregate-roots
-
如果您使用 Code-First 开发代替,您可以这样做:thedatafarm.com/data-access/…
-
@IronMan84 这可以(并且应该)通过修改 t4 模板来完成。那么这些更改将不会被更新覆盖。
标签: c# entity-framework ef-database-first