Хорошо наследование...
предполагают, что у Вас есть это классы:
class A {
public int Foo(){ return 5;}
public virtual int Bar(){return 5;}
}
class B : A{
public new int Foo() { return 1;} //shadow
public override int Bar() {return 1;} //override
}
тогда, когда Вы называете это:
A clA = new A();
B clB = new B();
Console.WriteLine(clA.Foo()); // output 5
Console.WriteLine(clA.Bar()); // output 5
Console.WriteLine(clB.Foo()); // output 1
Console.WriteLine(clB.Bar()); // output 1
//now let's cast B to an A class
Console.WriteLine(((A)clB).Foo()); // output 5 <<<-- shadow
Console.WriteLine(((A)clB).Bar()); // output 1
предположим у Вас есть базовый класс, и Вы используете базовый класс во всем своем коде вместо наследованных классов, и Вы используете тень, это возвратит значения возвраты базового класса вместо следующего дерево наследования реального типа объекта.
Надежда я имею смысл:)
К сожалению, SMO ненамного лучше SQL-DMO для предоставления методов, которые должны быть доступны. Вам нужно будет использовать встроенный SQL:
db.ExecuteNonQuery("sp_change_users_login 'auto_fix', 'ORPHANED_USERNAME'")
или
db.ExecuteNonQuery("sp_change_users_login 'update_one', 'ORPHANED_USERNAME', 'ORPHANED_USERNAME'")
Из T-SQL ALTER LOGIN ... WITH LOGIN = ...
LOGIN = login_name
Переназначает пользователя в другой логин, изменив пользователя Идентификатор безопасности (SID) для соответствия логин SID.
Я не пробовал, потому что я бы синхронизировал SID между серверами (и в наши дни редко использую логины SQL)
Однако это соответствует методу User.Alter .
Итак, это может сработать ...
Если ему не нравится использовать тот же логин, я думаю, вы можете сопоставить его с другим логином и обратно.