我在我的Web api项目中使用了net core 3.1框架。我的问题是,我有一个没有数据库上下文的实体(“ FirebaseUser”)。但是,此实体与具有数据库上下文的实体(“ Mitarbeiter”)具有一对一关系。然后,将“ FirebaseUser”实体扩展为“ Mitarbeiter”实体,属性“ Mitarbeiter”为空。 不执行用于选择“ Mitarbeiter”的sql语句。我想是因为我要返回一个没有数据库上下文的实体。有人有想法吗?
FirebaseUser实体声明:
[NotMapped]
[FirestoreData]
public class FirebaseUser : FirestoreObject
{
[FirestoreProperty]
public string sUid { get; set; }
[FirestoreProperty]
public string sEmail { get; set; }
[FirestoreProperty]
public bool? bAlwaysMustLogin { get; set; }
[FirestoreProperty(ConverterType = typeof(GuidConverter))]
public Guid? sMitarbeiterId { get; set; }
[FirestoreProperty]
public bool? bDeleted { get; set; }
public string sPasswort { get; set; }
[ForeignKey("sMitarbeiterId")]
public virtual Mitarbeiter Mitarbeiter { get; set; }
}
FirebaseUser控制器代码
[EnableQuery]
public async Task<IActionResult> Get([FromODataUri] string key)
{
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", FirestoreObject.CredentialPath);
FirestoreDb oDb = FirestoreDb.Create(FirestoreObject.FirestoreDb);
DocumentSnapshot oBenutzerSnapshot = await oDb.Collection("benutzer_benu").Document(key).GetSnapshotAsync();
if (!oBenutzerSnapshot.Exists)
{
return NotFound();
}
FirebaseUser oUser = oBenutzerSnapshot.ConvertTo<FirebaseUser>();
return Ok(oUser);
}
结果看起来像这样 (“ / FirebaseUser?$ expand = Mitarbeiter”)
{
"@odata.context": "http://localhost:52854/$metadata#FirebaseUser(Mitarbeiter())/$entity",
"sUid": "2BYJSDtifrV14yuw06XDSvrlz363",
"sEmail": "werner-eder@t-online.de",
"bAlwaysMustLogin": null,
"sMitarbeiterId": null,
"bDeleted": false,
"sPasswort": null,
"sId": "7uIDmH8QHRqbONZaoA8o",
"sAngelegtVonUid": null,
"dAngelegtAm": null,
"Mitarbeiter": null
}