Я получил сценарии базы данных от клиентов, которые нельзя изменить. Когда я пытаюсь создать объекты из этих сценариев с использованием EntityFramework базы данных Первый подход, ссылочная связь отсутствует из классов:Свойства навигации Entity Framework отсутствуют в первом подходе базы данных
CREATE TABLE agency(
tenant_sktmp INT identity(1,1) not null,
rec_create_tmstptmp DATETIME NOT NULL,
rec_update_tmstptmp DATETIME NOT NULL,
rec_created_bytmp VARCHAR(50),
rec_updated_bytmp VARCHAR(50),
env_nametmp VARCHAR(100) NOT NULL,
product_app_nametmp VARCHAR(100) NOT NULL,
tenant_idtmp VARCHAR(50) NOT NULL,
tenant_nametmp VARCHAR(100) NOT NULL
PRIMARY KEY (tenant_sktmp)
)
CREATE TABLE usertmp(
user_sktmp INT identity(1,1) not null,
rec_create_tmstptmp DATETIME NOT NULL,
rec_update_tmstptmp DATETIME NOT NULL,
rec_created_bytmp VARCHAR(50),
rec_updated_bytmp VARCHAR(50),
user_nametmp VARCHAR(100) NOT NULL,
tenant_idtmp VARCHAR(50) NOT NULL,
env_nametmp VARCHAR(100) NOT NULL,
user_pwd_hashtmp VARCHAR(255) NOT NULL,
user_first_nametmp VARCHAR(200) NOT NULL,
user_last_nametmp VARCHAR(200) NOT NULL,
user_hire_datetmp DATETIME,
user_birth_datetmp DATETIME,
user_staff_idtmp VARCHAR(50),
user_santrax_idtmp VARCHAR(50),
user_guidtmp VARCHAR(128),
PRIMARY KEY (user_sktmp)
)
CREATE UNIQUE INDEX tmp12 ON agency(tenant_idtmp, env_nametmp)
CREATE INDEX ref64tmp ON agency(env_nametmp)
CREATE UNIQUE INDEX user_key1qqq ON usertmp(user_nametmp, env_nametmp, tenant_idtmp)
CREATE INDEX ref56qq ON usertmp(tenant_idtmp, env_nametmp)
CREATE INDEX ref67qq ON usertmp(env_nametmp)
ALTER TABLE usertmp ADD CONSTRAINT Reftenant6tmp
FOREIGN KEY (tenant_idtmp, env_nametmp)
REFERENCES agency(tenant_idtmp, env_nametmp)
Классы, созданные из EF базы данных первого подхода следующим образом:
public partial class usertmp
{
public int user_sktmp { get; set; }
public System.DateTime rec_create_tmstptmp { get; set; }
public System.DateTime rec_update_tmstptmp { get; set; }
public string rec_created_bytmp { get; set; }
public string rec_updated_bytmp { get; set; }
public string user_nametmp { get; set; }
public string tenant_idtmp { get; set; }
public string env_nametmp { get; set; }
public string user_pwd_hashtmp { get; set; }
public string user_first_nametmp { get; set; }
public string user_last_nametmp { get; set; }
public Nullable<System.DateTime> user_hire_datetmp { get; set; }
public Nullable<System.DateTime> user_birth_datetmp { get; set; }
public string user_staff_idtmp { get; set; }
public string user_santrax_idtmp { get; set; }
public string user_guidtmp { get; set; }
}
public partial class agency
{
public int tenant_sktmp { get; set; }
public System.DateTime rec_create_tmstptmp { get; set; }
public System.DateTime rec_update_tmstptmp { get; set; }
public string rec_created_bytmp { get; set; }
public string rec_updated_bytmp { get; set; }
public string env_nametmp { get; set; }
public string product_app_nametmp { get; set; }
public string tenant_idtmp { get; set; }
public string tenant_nametmp { get; set; }
}
Мы видим, что между двумя классами отсутствует связь. Как я могу убедиться, корабль отношения остается, поскольку у меня есть внешние ключи в таблице usertmp, которая ссылается на таблицу агентства.
Sql-скрипты не могут быть изменены. Любая помощь будет оценена по достоинству.
Entity Framework поддерживает отношения только через ключевые поля. tenant_idtmp не является INT FK. –
Даже если это целое число, то также я столкнулся с той же проблемой –
Я предполагаю, что tenant_idtmp - это ваше поле, которое связывает. Не имеет значения, что это строки, проблема в том, что это не первичный ключ вашего класса агентства (tenant_sktmp), поэтому [EF не может установить отношения] (http://stackoverflow.com/questions/13498795/entity -framework-кода первой картография-без внешнего ключа). Однако вы могли бы присоединиться к объединению. –