我使用的是LinqPAD的免费版本。
我只有带代码的.cs文件。我无法运行和调试它。我没有数据库。
(而且我不是C#程序员。)
我需要将Linq查询转换为原始SQL(MsSql)查询。我想查看简单的SQL查询。
因此,我打开LinqPAD并编写表示数据库中三个表的硬编码对象/类。
我切换到“ C#程序”。
import { TestBed, async } from '@angular/core/testing';
import { AppComponent } from './app.component';
import { ScrollingModule } from '@angular/cdk/scrolling';
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
AppComponent
],
imports: [
ScrollingModule,
],
}).compileComponents();
}));
it('should render at least 4 items', () => {
const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();
const compiled = fixture.debugElement.nativeElement as HTMLElement;
expect(compiled.querySelectorAll('.example-item').length).toBeGreaterThanOrEqual(4); // <-- Error: Expected 0 to be greater than or equal 4.
});
});
}
我按下跑步。
LinqPAD在Vizualizer中显示了我的表格。但是“ SQL”选项卡为空。
怎么了?我可以获取原始SQL查询吗?
像public class ContactModel
{
public int UserSecondId { get; set; }
public int UserId { get; set; }
public int OrganizationId { get; set; }
public bool IsPrimary { get; set; }
}
class Contacts
{
public int OrganizationId { get;set; }
public int UserId { get;set; }
public char IsPrimary { get;set; }
}
class Organizations
{
public int Id { get;set; }
public int SecondId { get;set; }
}
class Users
{
public int Id { get;set; }
public char IsActive { get;set; }
public int SecondId { get;set; }
}
void Main()
{
List<Contacts> Contacts = new List<Contacts>();
Contacts.Add(new Contacts { OrganizationId = 1, UserId = 1, IsPrimary = 'Y' });
Contacts.Add(new Contacts { OrganizationId = 2, UserId = 1, IsPrimary = 'Y' });
List<Organizations> Organizations = new List<Organizations>();
Organizations.Add(new Organizations { Id = 1, SecondId = 1 });
Organizations.Add(new Organizations { Id = 2, SecondId = 2 });
List<Users> Users = new List<Users>();
Users.Add(new Users { Id = 1, SecondId = 1, IsActive = 'Y' });
Users.Add(new Users { Id = 2, SecondId = 1, IsActive = 'Y' });
int[] orgSecondIdList = { 1, 2 };
var query =
from contacts in Contacts
from orgs in Organizations.Where(o => o.Id == contacts.OrganizationId)
from users in Users.Where(o => o.Id == contacts.UserId)
where contacts.IsPrimary == 'Y' && users.IsActive == 'Y' &&
orgSecondIdList.Contains(orgs.SecondId)
select new ContactModel
{
OrganizationId = contacts.OrganizationId,
UserId = contacts.UserId,
UserSecondId = users.SecondId
};
query.Dump();
答案 0 :(得分:0)
如果您希望利用LinqPads功能为您将Linq查询转换为SQL,则需要SQL数据库的支持。 LinqPad还提供了许多驱动程序,使您可以使用许多数据源(例如SQLite),而这些数据源所需的开销比MSSQL少。没有SQL数据库,LinqPad无法帮助您。
如果要在没有数据库的情况下继续使用LinqPads功能,则需要使用上面列出的类来建立数据库架构。如果代码在使用Visual Studio的C#项目中,则Entity Framework可以首先使用代码根据这些类为您生成数据库架构。