una tipos programacion parametrizado objeto llamar instanciar entre ejemplos diferencia crear como clases clase c# .net linq linq-to-sql

c# - tipos - ¿Hay alguna manera de anular el constructor vacío en una clase generada por LINQtoSQL?



llamar una clase en c# (3)

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

Abra 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 a continuación

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

Si tengo una tabla en mi base de datos llamada ''Usuarios'', habrá una clase generada por LINQtoSQL llamada ''Usuario'' con un constructor vacío ya declarado.

¿Cuál es la mejor práctica si quiero anular este constructor y agregarle mi propia lógica?


El constructor predeterminado generado por O / R-Designer llama a una función parcial llamada OnCreate, por lo que la mejor práctica es no anular el constructor predeterminado, sino implementar la función parcial OnCreated en MyDataClasses.cs para inicializar los elementos:

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, las entidades (relaciones) se construyen en el constructor predeterminado.


No parece que puedas 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; } }

Luego, en cualquier lugar de su código, en lugar de usar el constructor vacío predeterminado, realice una de las siguientes acciones:

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