我创建了一个数据上下文类:
public class DBContextZProdDomainSS : DataContext
{
public Table<ZTask> ZTasks { get; set; }
public Table<ZProject> ZProjects { get; set; }
public Table<ZUser> ZUsers { get; set; }
public DBContextZProdDomainSS() : base(ConfigurationManager.ConnectionStrings["ZProdDomainSS"].ConnectionString) { }
}
在实例化时,它成功连接到数据库:
public static IEnumerable<ZTask> ZTaskRead()
{
using (var context = new DBContextZProdDomainSS())
{
if (context.DatabaseExists())
{
Console.WriteLine("Found database");
}
return context.ZTasks.ToList();
}
}
无论出于何种原因,方法context.DatabaseExists()
都会返回true,但是当我单步执行并检查连接的值时,它会关闭。此外,即使表示数据库存在,所有表引用都为null。
以下是我的连接字符串示例(删除了敏感信息):
Server=tcp:zproductivity.database.windows.net,1433;
Initial Catalog=ZProdDomainSS;Persist Security Info=False;
User ID=MYUSERNAME;Password=MYPASSWORD;MultipleActiveResultSets=False;
Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
但无论出于何种原因,表引用都是null。为什么会这样?我已经浏览了每个模型类并将它们映射为:
[Table(Name = "ZTasks")]
public class ZTask : ModelBase
{
#region props
[Column(Name = "ZID", IsPrimaryKey = true, IsDbGenerated = true)]
public long ZID { get; set; }
[Column(Name = "UtcCreatedDateTime", IsDbGenerated = true)]
public DateTime UtcCreatedDateTime { get; set; }
[Column(Name = "Title", CanBeNull = true)]
public string Title { get; set; }
[Column(Name = "ZUserZID", CanBeNull = false)]
public long ZUserZID { get; set; }
[Column(Name = "Description", CanBeNull = true)]
public string Description { get; set; }
[Column(Name = "ZProjectZID", CanBeNull =true)]
public long? ZProjectZID { get; set; }
[Column(Name = "ZParentTaskZID", CanBeNull = true)]
public long? ZParentTaskZID { get; set; }
[Column(Name = "UtcDueDate", CanBeNull = true)]
public DateTime? UtcDueDate { get; set; }
[Column(Name = "UtcCompletionDateTime", CanBeNull = true)]
public DateTime? UtcCompletionDateTime { get; set; }
[Column(Name = "Completed", CanBeNull = false)]
public bool Completed { get; set; }
}
ZProjects和ZUsers都以相同的方式映射。这是ZTasks的数据库模式:
CREATE TABLE [dbo].[ZTasks]
(
[ZID] BIGINT IDENTITY (100000000, 1) NOT NULL,
[Title] NVARCHAR (MAX) NULL,
[ZUserZID] BIGINT NOT NULL,
[Description] NVARCHAR (MAX) NULL,
[ZProjectZID] BIGINT NULL,
[UtcDueDate] DATETIME DEFAULT (NULL) NULL,
[UtcCompletionDateTime] DATETIME DEFAULT (NULL) NULL,
[Completed] BIT DEFAULT ((0)) NOT NULL,
[UtcCreatedDateTime] DATETIME DEFAULT (sysutcdatetime()) NOT NULL,
[ZParentTaskZID] BIGINT NULL,
CONSTRAINT [PK_dbo.ZTasks] PRIMARY KEY CLUSTERED ([ZID] ASC)
);
为什么表引用null?我该如何解决这个问题?