我试图在F#中使用SqlDataConnection类型提供程序来访问我使用C#中定义的实体框架代码第一模型创建的数据库。
public class Tag
{
[Required]
public int TagId { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<Bookmark> TagBMs { get; set; }
public Tag()
{
TagBMs = new HashSet<Bookmark>();
}
}
public class Bookmark
{
[Required]
public int BookmarkId { get; set; }
[Required]
public string Url { get; set; }
[Required]
public DateTime DateAdded { get; set; }
public virtual ICollection<Tag> BMTags { get; set; }
public Bookmark()
{
BMTags = new HashSet<Tag>();
}
}
public class BookmarksContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder builder)
{
builder.Entity<Bookmark>().HasMany(b => b.BMTags).WithMany(t => t.TagBMs).Map(cs =>
{
cs.MapLeftKey("TagId");
cs.MapRightKey("BookmarkId");
cs.ToTable("BookmarkTag");
});
base.OnModelCreating(builder);
}
public DbSet<Bookmark> Bookmarks { get; set; }
public DbSet<Tag> Tags { get; set; }
}
在C#中访问数据库时,Tag对象有一个&#34; TagBMs&#34;财产,书签上有一个&#34; BMTags&#34;我可以用来向书签添加标签和向标签添加书签的属性。但是,当我尝试从F#访问同一个数据库时,这些属性不会出现。相反,Bookmark对象有一个&#34; BookmarkTag&#34;从链接表返回数据的属性。我需要更改什么才能在F#中获得正确的属性?我按如下方式设置了SqlDataConnection类型:
type dbSchema = SqlDataConnection<"""Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=DatabaseModelAndMigrations.BookmarksContext;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False""">
答案 0 :(得分:0)
不要使用SQL类型提供程序,只需使用F#代码中的C#EF DbContext。
会更简单,更简单。