2008-09-17 21 views

Respuesta

11

El constructor por defecto que se genera por la O/R-Designer, pide una función parcial llama OnCreate - lo que la mejor práctica no es reemplazar el constructor por defecto, pero en su lugar poner en práctica la función parcial OnCreated en MyDataClasses.cs para inicializar los objetos:

partial void OnCreated() 
{ 
    Name = ""; 
} 

Si está implementando otros constructores, siempre tenga cuidado de llamar al constructor predeterminado para que las clases se inicialicen correctamente; por ejemplo, los conjuntos de entidades (relaciones) se construyen en el constructor predeterminado.

3

Parece que no puede anular el constructor vacío. En cambio, crearía un método que realiza la funcionalidad que necesita en el constructor vacío y devuelve el nuevo objeto.

// Add new partial class to extend functionality 
public partial class User { 

    // Add additional constructor 
    public User(int id) { 
    ID = id; 
    } 

    // Add static method to initialize new object 
    public User GetNewUser() { 
    // functionality 
    User user = new User(); 
    user.Name = "NewName"; 
    return user; 
    } 
} 

A continuación, el resto del código, en lugar de utilizar el constructor por defecto vacía, siga uno de los siguientes:

User user1 = new User(1); 
User user2 = User.GetNewUser(); 
1

Establecer la propiedad de conexión de DataContext a 'Ninguno' funcionó para mí. Pasos a continuación.

Abra el archivo dbml -> Propiedades de clic derecho -> Actualizar conexión en las propiedades de DataContext a 'Ninguna'. Esto eliminará el constructor vacío del archivo de código generado. -> Crear una nueva clase parcial para el DataContext con un constructor vacío como el siguiente

Partial Class MyDataContext  
    Public Sub New()    
     MyBase.New(ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString, mappingSource) 
     OnCreated()  
    End Sub  
End Class 
Cuestiones relacionadas