当客户使用社会安全号码登录网站时,我希望它向客户显示客户名称,帐户号码和余额。这些信息必须通过数据库获取。
帐户表:
CREATE TABLE [dbo].[Accounts] (
[id] BIGINT IDENTITY (1, 1) NOT NULL,
[accountnumber] VARCHAR (50) NULL,
[accountname] VARCHAR (50) NULL,
[SSN] BIGINT NOT NULL,
[CustomerId] INT NULL,
[balance] VARCHAR (50) NULL,
[BalanceId] INT NULL,
[AccountId] INT NULL,
CONSTRAINT [PK_dbo.Accounts] PRIMARY KEY CLUSTERED ([id] ASC),
CONSTRAINT [FK_dbo.Accounts_dbo.Customer] FOREIGN KEY ([SSN]) REFERENCES [dbo].[Customer] ([SSN])
);
GO
CREATE NONCLUSTERED INDEX [IX_SSN]
ON [dbo].[Accounts]([SSN] ASC);
客户表:
CREATE TABLE [dbo].[Customer] (
[id] BIGINT IDENTITY (1, 1) NOT NULL,
[Firstname] VARCHAR (50) NULL,
[Lastname] VARCHAR (50) NULL,
[SSN] BIGINT NOT NULL,
[Password] VARBINARY (MAX) NULL,
[ConfirmPassword] VARCHAR (MAX) NULL,
[Salt] VARCHAR (MAX) NULL,
[AccountId] INT NULL,
[BalanceId] INT NULL,
[RegPayId] INT NULL,
[ConfirmedRegPayId] INT NULL,
[CustomerId] INT NULL,
CONSTRAINT [PK_dbo.Customer] PRIMARY KEY CLUSTERED ([SSN] ASC)
);
但是这段代码告诉我没有客户:
List<AccountsCTX> everyBalance = db.Accounts.Join(db.Customer, a => a.id,
c => c.SSN,
(a, c) => new AccountsCTX()
{
//id = a.id,
SSN = a.SSN,
accountname = a.accountname,
accountnumber = a.accountnumber,
balance = a.balance
}
).ToList();
return everyBalance;
我将表“Accounts”和“SSN”中的“id”作为主键,作为“Customer”表中的外键。
我还是编程的新手所以需要更多的练习xD 让我知道更多细节,并感谢我能得到的所有帮助!
答案 0 :(得分:1)
你可以尝试
public static AccountsCTX GetEveryBalance(long currentCustomerSsn)
{
AccountsCTX everyBalance = db.Accounts.Join(db.Customer, a => a.SSN,
c => c.SSN,
(a, c) => new AccountsCTX()
{
//id = a.id,
SSN = a.SSN,
accountname = a.accountname,
accountnumber = a.accountnumber,
balance = a.balance
}
).Where(x=>x.SSN==currentCustomerSsn).FirstOrDefault();//currentCustomerSsn is enter ssn by Customer
return everyBalance;
}
//Create customer
public long insertCusReg(CustomerCTX inCusReg)
{
...
try
{
...
return inCusReg.SSN;
}
catch (Exception)
{
return 0;
}
}
通话方法
currentCustomerSsn=insertCusReg(CustomerCTX);// pass CustomerCTX object
AccountsCTX everyBalance=GetEveryBalance(currentCustomerSsn);
答案 1 :(得分:1)
实际上我没有看到除了SSN之外提供的两个表之间的任何关系,这个内连接将获取所有表中具有相同SSN id的记录:
List<AccountsCTX> everyBalance = db.Accounts.Join(db.Customer, a => a.SSN,
c => c.SSN,
(a, c) => new AccountsCTX()
{
SSN = a.SSN,
accountname = a.accountname,
accountnumber = a.accountnumber,
balance = a.balance
}).Where(x=>x.SSN==InputSSN).ToList();
return everyBalance;